Как исправить исключение? - C#
Формулировка задачи:
Здравствуйте. Объясню суть программы (Точнее ее части) - Рандомно генерируется ключ. Если такой ключ уже есть у какого либо символа из массива, то тогда ключ генерируется заново. Но так как моих знаний не хватило, чтобы всю эту генерацию сделать в виде цикла, то я все таки решил использовать goto. Сначала все нормально работает. Но в некоторых моментах происходит зацикливание (Полное), программа зависает. Но я не унываю! Решаю сделать это все в виде отдельно потока. Запускаю. Баунц. Исключение. Как его исправить?
P.S: Да-да, goto - плохо. Вот, кстати, сам метод :
==================================
Кстати, буду благодарен, кто поможет или подскажет, как эту часть в виде цикла сделать :
==============================
P.P.S: _Data - коллекция типа Dictionary. _RndChar - Массив, из элементов которого и строится ключ.
Листинг программы
- void _KeyGen()
- {
- Random _rnd = new Random();
- string _Char = _Learn_Learn_TB.Text;
- Start:;
- string _Key = null;
- for (int i = 0; i < 5; i++)
- {
- _Key += _RndChar[_rnd.Next(0, 36)];
- }
- if (_Data.ContainsValue(_Char) == false)
- {
- if (_Data.ContainsKey(_Key) == true)
- {
- string _LogMsg = "The key "" + _Key + "" for char "" + _Char + "" busy";
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- goto Start;
- }
- else
- {
- if (_Char.Length > 1)
- {
- string _LogMsg = "The char "" + _Char + "" is too long";
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- _Learn_Learn_TB.Text = "";
- goto End;
- }
- else
- {
- _Data.Add(_Key, _Char);
- string _LogMsg = "Added key "" + _Key + "" for "" + _Char + """;
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- _Learn_Learn_TB.Text = "";
- }
- }
- }
- else
- {
- _Learn_Learn_TB.Text = "Error";
- }
- End:;
- }
Листинг программы
- if (_Data.ContainsValue(_Char) == false)
- {
- if (_Data.ContainsKey(_Key) == true)
- {
- string _LogMsg = "The key "" + _Key + "" for char "" + _Char + "" busy";
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- goto Start;
- }
- else
- {
- if (_Char.Length > 1)
- {
- string _LogMsg = "The char "" + _Char + "" is too long";
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- _Learn_Learn_TB.Text = "";
- goto End;
- }
- else
- {
- _Data.Add(_Key, _Char);
- string _LogMsg = "Added key "" + _Key + "" for "" + _Char + """;
- _Learn_Log_LB.Items.Insert(0, _LogMsg);
- _Learn_Learn_TB.Text = "";
- }
- }
- }
- else
- {
- _Learn_Learn_TB.Text = "Error";
- }
- End:;
Решение задачи: «Как исправить исключение?»
textual
Листинг программы
- if (_Learn_Log_LB.InvokeRequired)
- _Learn_Log_LB.Invoke(new Action(() => _Learn_Log_LB.Items.Insert(0, _LogMsg)));
- else _Learn_Log_LB.Items.Insert(0, _LogMsg);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д