Как исправить исключение? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Объясню суть программы (Точнее ее части) - Рандомно генерируется ключ. Если такой ключ уже есть у какого либо символа из массива, то тогда ключ генерируется заново. Но так как моих знаний не хватило, чтобы всю эту генерацию сделать в виде цикла, то я все таки решил использовать goto. Сначала все нормально работает. Но в некоторых моментах происходит зацикливание (Полное), программа зависает. Но я не унываю! Решаю сделать это все в виде отдельно потока. Запускаю. Баунц. Исключение. Как его исправить? P.S: Да-да, goto - плохо. Вот, кстати, сам метод :
Листинг программы
  1. void _KeyGen()
  2. {
  3. Random _rnd = new Random();
  4. string _Char = _Learn_Learn_TB.Text;
  5. Start:;
  6. string _Key = null;
  7. for (int i = 0; i < 5; i++)
  8. {
  9. _Key += _RndChar[_rnd.Next(0, 36)];
  10. }
  11. if (_Data.ContainsValue(_Char) == false)
  12. {
  13. if (_Data.ContainsKey(_Key) == true)
  14. {
  15. string _LogMsg = "The key "" + _Key + "" for char "" + _Char + "" busy";
  16. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  17. goto Start;
  18. }
  19. else
  20. {
  21. if (_Char.Length > 1)
  22. {
  23. string _LogMsg = "The char "" + _Char + "" is too long";
  24. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  25. _Learn_Learn_TB.Text = "";
  26. goto End;
  27. }
  28. else
  29. {
  30. _Data.Add(_Key, _Char);
  31. string _LogMsg = "Added key "" + _Key + "" for "" + _Char + """;
  32. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  33. _Learn_Learn_TB.Text = "";
  34. }
  35. }
  36. }
  37. else
  38. {
  39. _Learn_Learn_TB.Text = "Error";
  40. }
  41. End:;
  42. }
================================== Кстати, буду благодарен, кто поможет или подскажет, как эту часть в виде цикла сделать :
Листинг программы
  1. if (_Data.ContainsValue(_Char) == false)
  2. {
  3. if (_Data.ContainsKey(_Key) == true)
  4. {
  5. string _LogMsg = "The key "" + _Key + "" for char "" + _Char + "" busy";
  6. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  7. goto Start;
  8. }
  9. else
  10. {
  11. if (_Char.Length > 1)
  12. {
  13. string _LogMsg = "The char "" + _Char + "" is too long";
  14. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  15. _Learn_Learn_TB.Text = "";
  16. goto End;
  17. }
  18. else
  19. {
  20. _Data.Add(_Key, _Char);
  21. string _LogMsg = "Added key "" + _Key + "" for "" + _Char + """;
  22. _Learn_Log_LB.Items.Insert(0, _LogMsg);
  23. _Learn_Learn_TB.Text = "";
  24. }
  25. }
  26. }
  27. else
  28. {
  29. _Learn_Learn_TB.Text = "Error";
  30. }
  31. End:;
============================== P.P.S: _Data - коллекция типа Dictionary. _RndChar - Массив, из элементов которого и строится ключ.

Решение задачи: «Как исправить исключение?»

textual
Листинг программы
  1. if (_Learn_Log_LB.InvokeRequired)
  2.                 _Learn_Log_LB.Invoke(new Action(() => _Learn_Log_LB.Items.Insert(0, _LogMsg)));
  3.             else _Learn_Log_LB.Items.Insert(0, _LogMsg);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы