私はこれについて読んだことがあります.Join()、主なコードに参加して移動する前に、問題のスレッドがその操作で終了するのを待っているようです。しかし、私の言うところでは、コードが.Join()にスタックしていて、スレッドはもう動いておらず、すでに閉じられているようです。問題のスレッドでヒットしたコードの最後の行はthis.Close()です。どのようなアイデアが起こっているのか、どのように修正するのですか?私のコードがForm2Thread.Join()にスタックされているのはなぜですか?
これは、Windows CEハンドヘルドデバイスで実行されるC#実行可能プログラムです。
また、これは断続的な問題であり、常に発生するとは限りません。
これは、スレッドが起動している:
//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();
私は問題の原因を発見しました。次の行がヒットし、2回目のコード実行時に問題が発生しました。一度それを取り除くと、それ以上の問題はありませんでした。
this.Invoke(new EventHandler(CloseLPDialog));
コード例は非常に役に立ちます。メインスレッドの一部(スレッドを作成して起動し、 'Join'を実行している部分)を表示することができれば、問題を見つけることができます。 –