実行時間の長い Task オブジェクトがいくつかあります。それらすべてを無期限に実行し続けたいと思います。これらのタスクの 1 つの仕事は、システムを自己監視することです。通常の動作条件以外で何かが発生した場合、実行を停止し、他のタスクにも実行を停止するように信号を送ることができるようにしたいと考えています。Task.WaitAny() を使用するだけで十分ですか? 1 つのスレッドを停止すると他のスレッドが停止しますか、それとも他のタスクが無期限に実行され続けるのでしょうか?
1 に答える
3
キャンセルを明示的に処理しない限り、これらのタスクは引き続き実行されます。
これを処理するための推奨される方法は、.NET 4 の新しい協調キャンセル サポートを使用することです。
通常の方法は、タスクが失敗/失敗したときに実行される各タスクを継続することです。CancelationTokenSource
その後、キャンセルされる を持つことができます。各タスクは、キャンセルが要求されたために中止する必要があるかどうかを時々チェックできます。
于 2012-05-11T00:15:42.633 に答える