実行時にスレッドが待機するEventWaitHandleを安全に変更する方法を知りたいと思います。実行時に、スレッドが待機するWaitHandleを代入する方法
例えば、EventWaitHandlesによって同期される2つのスレッド(AとC)があるとします。 Aはそのジョブを周期的に実行し、CはAからジョブを開始できるという通知を(たとえばAutoResetEventによって)受け取るまで待ちます。パターンはACACです...
この後、新しいスレッド(B)が起動され(たとえば、ユーザーアクションによって)、そのジョブはこのように2つの既存のスレッドの間で実行されます。 BとBが信号を終了すると、CはCを終了します。パターンはABCABC ...
スレッドCがAと共有していたEventWaitHandleを待っていた後、別のEventWaitHandleを共有する別のEventWaitHandleを待機させる安全なメカニズムが必要です。 B.これが完了すると、EventWaitHandleを使用してAジョブを待機し、EventWaitHandleを使用してCジョブを通知するBを簡単に起動する必要があるため、Cが使用するEventWaitHandleをトリッキーな部分に置き換えているようです。このメカニズムでは、スレッドBを安全にアンマウントし、スレッドAとCのみが動作している初期の状態に戻る方法も提供する必要があります。
EventWaitHandleでこれを達成する安全な方法はありますか?そうでない場合は、他の提案もありがとうございます。
.NET 4.0を使用している場合は、[タスク]を使用すると簡単になります。本質的には、AとBがBで続き、CがBで続けるというような3つのタスクがあります。Bは本質的に何もしないという状況では何もしませんが、あるときは何かをするでしょう。ミックスからBを「挿入」して「取り除く」のではなく、常にミックスしておく必要があります。これにより、これを維持するのが難しくなりません。 –