2012-05-11 9 views
1

長時間実行されているTaskオブジェクトは複数あります。私は彼らにすべて無期限に走り続けたいと思っています。これらのタスクの1つは、システムを自己監視することです。正常な動作状態以外で何かが発生した場合は、動作を停止して他のタスクに何らかの原因で動作が停止するように通知したいと思います。 Task.WaitAny()を使用するだけで十分ですか?一方のスレッドを停止すると他のスレッドは停止しますか、他のタスクは無期限に実行されますか?ピアの長時間実行されているタスクが停止している場合、そのタスクをキャンセルする方法

答えて

2

キャンセルを明示的に処理しない限り、これらのタスクは引き続き実行されます。これを処理する好ましい方法は、.NETで新しいcooperative cancellation support 4.

を使用している

通常の方法では、タスクが失敗したときに/障害を実行する各タスクの継続を持っているだろう。その後、キャンセルされるCancelationTokenSourceがある可能性があります。それぞれのタスクは、キャンセルが要求されたため中止する必要があるかどうかを確認することがあります。

+0

ありがとうございます。それはキャッチ22のように感じたが、継続トークンを使用してキャンセルトークンを送信することは素晴らしい解決策である。 –

関連する問題