Из того, что я читал об этом .Join(), кажется, дождался, что этот вопрос будет выполнен с его операциями, прежде чем присоединяться и двигаться дальше с основным кодом. Однако, насколько я могу судить, когда мой код застревает в .Join(), этот поток больше не работает и, похоже, уже закрыт. Последней строкой кода, которая попадает в рассматриваемый поток, является this.Close(). Любые идеи, что происходит и как это исправить?Почему мой код застрял в Form2Thread.Join()?
Это исполняемая программа на C#, работающая на ручном устройстве Windows CE.
Возможно, я также должен добавить, что это периодическая проблема, которая не всегда происходит.
Это нити начинают:
//Start the thread to continuously receive while the LP dialog is open
Thread Form2Thread = new Thread(new ThreadStart(this.Nep450_ThreadLowPower));
Это код непосредственно перед .join():
else if (Form2.g_IsOKPressed)//This variable is set in the thread in qustionFomr
{
g_bThreadLowPowerTerminate = true;
Thread.Sleep(500);
Form2Thread.Join();
Я нашел источник проблемы. Следующая строка была удалена и вызвала проблему, когда код был запущен во второй раз. Как только я удалил его, проблем больше не было.
this.Invoke(new EventHandler(CloseLPDialog));
Пример кода был бы очень полезен. Если вы можете показать нам часть вашего основного потока (часть, которая создает и запускает поток, и делает «Join»), мы можем обнаружить проблему. –