タスクの即時終了
Thread.Abort
を使用できる (一般的には推奨されませんが) スレッドとは異なり、.NET 4.0 でのタスクの停止は、特にタスクに呼び出しのブロックが含まれている場合には必ずしも瞬時に行われるわけではありません。 キャンセルが推奨される方法ですが、すぐに解決できるという保証はありません。
Web サービス呼び出しをブロックする並列ループを想像してください。キャンセルしても、フォアグラウンド スレッド (ループの反復処理) を完了する必要があり、遅延が発生する可能性があるため、アプリケーションはすぐにはシャットダウンされない可能性があります。
タスクキャンセルの代替手段
これを克服するには、次の代替案を検討してください。
CancellationToken
を採用します。 これによっても、開始スレッドで例外が発生する可能性があることに注意してください。スレッドの中止: 最後の手段
システムが不安定になる可能性があるため通常は避けられますが、極端な場合には Thread.Abort
が必要になる場合があります。 CancellationTokenSource
を使用してThread.CurrentThread.Abort
を登録すると、ブロック通話を中断して強制終了できます。 ただし、システムのクラッシュを防止し、適切なリソースのクリーンアップを確保するには、中止されたスレッドの例外ハンドラー内での厳密な例外処理が不可欠です。
概要
.NET 4.0 でタスクを即時に停止することは、特にブロック操作中に困難です。キャンセルが推奨される戦略ですが、他の方法が必要になる場合もあります。スレッドの中止は最後の手段であるべきであり、システムの安定性のために細心の注意を払った例外処理が必要です。
以上が.NET 4.0 で、特に呼び出しをブロックしているときにタスクをすぐに中止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。