Thread.Suspend()
メソッドはご存じのとおり廃止されました。ボタンクリックイベントが発生したときにスレッドを即座に中断したい私はThread.Suspend()を使用して、それは完璧に動作しますが、誰もがThread.Suspend()メソッドを使用することは、タスクを中断する良い方法ではないことを示唆しています。私はタスクを中断するためにフラグを使用しましたが、ボタンクリックイベントが来るたびに、タスクを終了するのを待たなければなりません。 Thread.IsAliveフラグを使用してスレッドの終了を待機させましたが、このメソッドはフォームをフリーズします。Thread.Suspend()メソッドの代わりに
void ButtonClickEvent(object sender, ButtonClickEventArgs e)
{
TheadExitFlag = false;
if(MyThread != null)
{
while(MyThread.IsAlive);
//MyThread.Suspend();
}
}
void MyTask(void)
{
while(TheadExitFlag)
{
// some process
Thread.Sleep(5000);
}
}
どうすればスレッドを即座に中断できますか?
あなたがしたいことをもっと明確にしてください - あなたはスレッドを「中断」したい、あるいはスレッドを終了させることを100%確信していません。別の例: 'MyThread'は' MyTask'が実行されているスレッドへの参照ですか? 'ThreadExitFlag == true'のように、スレッドは終了しないでください。もしそうなら、名前を変更することをお勧めします。 –
スレッドを一時停止したいのはなぜですか? – user844541
間違った設備を使って問題を解決しようとしているのですが、どうしてスレッドを一時停止する必要があるのでしょうか? – sll