Как исправить исключение? - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д