Из того, что я читал по этому поводу .Join (), похоже, ждет, когда рассматриваемый поток выполнит свои операции, прежде чем присоединиться и перейти к основному коду.Однако, насколько я могу судить, когда мой код застревает в .Join (), этот поток больше не работает и, кажется, уже закрыт.Последняя строка кода, которая попадает в рассматриваемый поток, это this.Close ().Есть идеи, что происходит и как это исправить?
Это исполняемая программа 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));