ManualResetEvent と ManualResetEventSlimManualResetEvent and ManualResetEventSlim

System.Threading.ManualResetEvent クラスはローカル待機ハンドル イベントを表します。これは、シグナル状態になった後、手動でリセットする必要があります。The System.Threading.ManualResetEvent class represents a local wait handle event that must be reset manually after it is signaled. このクラスは、その基底クラス System.Threading.EventWaitHandle の特殊なケースを表します。This class represents a special case of its base class, System.Threading.EventWaitHandle. 手動リセット イベントの使用方法と機能については、EventWaitHandle の概念に関する文書を参照してください。See the EventWaitHandle conceptual documentation for the use and features of manual reset events.

ManualResetEvent オブジェクトは、EventWaitHandle.Reset メソッドが呼び出されるまでシグナル状態のままです。A ManualResetEvent object remains signaled until its EventWaitHandle.Reset method is called. 待機スレッド、つまりイベントがシグナル状態になるまで待機するスレッドは、そのオブジェクトがシグナル状態である間にいくつでも解放できます。Any number of waiting threads, or threads that wait on the event after it has been signaled, can be released while the object's state is signaled. ManualResetEvent は、bManualReset 引数に対して true を指定する、Win32 CreateEvent 呼び出しに対応します。ManualResetEvent corresponds to a Win32 CreateEvent call, specifying true for the bManualReset argument.

.NET Framework 4.NET Framework 4 では、待機時間が非常に短いと予測される場合とイベントがプロセスの境界を越えない場合に、System.Threading.ManualResetEventSlim クラスを使用してパフォーマンスを高めることができます。In the .NET Framework 4.NET Framework 4, you can use the System.Threading.ManualResetEventSlim class for better performance when wait times are expected to be very short, and when the event does not cross a process boundary. ManualResetEventSlim は、イベントがシグナル状態になるまで待機している間、ビジー スピンを短時間使用します。ManualResetEventSlim uses busy spinning for a short time while it waits for the event to become signaled. 待機時間が短い場合、待機ハンドルを使用して待機するより、スピンを使用するほうが負荷が大幅に低くなります。When wait times are short, spinning can be much less expensive than waiting by using wait handles. ただし、特定の期間内にイベントがシグナル状態にならない場合、ManualResetEventSlim は通常のイベント ハンドル待機を使用します。However, if the event does not become signaled within a certain period of time, ManualResetEventSlim resorts to a regular event handle wait.

参照See Also

スレッド化Threading
スレッド処理オブジェクトと機能Threading Objects and Features
待機ハンドルWait Handles
AutoResetEventAutoResetEvent
SpinWaitSpinWait
Semaphore と SemaphoreSlimSemaphore and SemaphoreSlim