ソフトウェア開発では、スレッドの実行を途中で終了することが必要になる場合があります。ただし、予期しない動作を引き起こす可能性があるため、Thread.Abort() を直接使用することはお勧めできません。
代わりに、スレッド終了に対する協調的なアプローチを実装することをお勧めします。これには、実行を継続する必要があるかどうかを示すブール値フラグ (keepGoing など) を監視するスレッドの作成が含まれます。
public class WorkerThread { private bool _keepGoing = true; public void Run() { while (_keepGoing) { // Perform the intended work of the thread. } } public void Stop() { _keepGoing = false; } }
この改訂された実装により、Stop メソッドが呼び出されたときにスレッドを安全かつ秩序正しくシャットダウンできます。 、Thread.Abort() の望ましくない影響を防ぎます。
さらに、Sleep や Wait などのブロック操作が発生する可能性のあるスレッドは、 ThreadInterruptedException を処理し、正常に終了します。
try { while (_keepGoing) { // Perform the intended work of the thread. } } catch (ThreadInterruptedException exception) { // Handle the interruption and perform necessary cleanup. }
スレッド終了に対するこの協調的なアプローチを実装することで、開発者はスレッドのライフサイクル全体の制御を維持し、信頼性が高く予測可能なアプリケーション実行を保証できます。
以上が.NET スレッドを安全に停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。