0
スレッドが終了するのを待つために.Abort()
と.Join()
でスレッドの実行を停止します。しかし、問題は、.Join()
がスレッドを終了したときと同じように、アプリケーションのブロックを決してしないということです。どうして?私のコード:スレッドが終了すると.Join()呼び出しがブロック解除されることはありません
th.Abort();
Console.WriteLine("request sent, please wait..");
th.Join();
Console.WriteLine("done!");
上記のコードは、アプリケーションのロックを解除することはありませんが、それは正常に動作します:事前に
th.Abort();
Console.WriteLine("request sent, please wait..");
while (serverTh.ThreadState != ThreadState.Aborted) {
Thread.Sleep(500);
}
Console.WriteLine("done!");
感謝を。
'Thread.Abort'ではありませんスレッドを終了させる良い方法です。これは、「Join」の後にさらに意味をなさないものになります。 –
@ M.Babcockこれらのステートメントはどちらも間違っています。 Abort()は、.NETスレッドの終了を通知する方法であり、それに応じて処理する必要があります。 .Join()は、メインアプリケーションが終了する前にスレッドがシャットダウンするのを待つ適切な方法です。 – Timeout
th!= serverTh。確かに、それはうまくいくかもしれません。 –