Share via


ManualResetEvent と ManualResetEventSlim

System.Threading.ManualResetEvent クラスは、シグナル状態になった後に手動でリセットする必要があるローカル待機ハンドル イベントを表します。 このクラスが表すのは、基本クラス System.Threading.EventWaitHandle の特殊なケースです。 手動リセット イベントの使用方法と機能については、EventWaitHandle の概念についてのトピックを参照してください。

ManualResetEvent オブジェクトは、その EventWaitHandle.Reset メソッドが呼び出されるまで、シグナル状態のままです。 待機スレッド、つまりイベントがシグナル状態になるまで待機するスレッドは、そのオブジェクトがシグナル状態である間にいくつでも解放できます。 ManualResetEvent は、bManualReset 引数を true に指定する Win32 CreateEvent 呼び出しと同じです。

.NET Framework Version 4 では、待機時間が非常に短くなると予測される場合、およびイベントがプロセス間にまたがらない場合に、System.Threading.ManualResetEventSlim クラスを使用してパフォーマンスを向上させることができます。ManualResetEventSlim では、イベントがシグナル状態になるのを待機する短い時間にビジー スピンを使用します。 待機時間が短い場合は、待機ハンドルよりもスピンを使用する方が負荷が大幅に低くなります。 ただし、一定期間内にイベントがシグナル状態にならない場合、ManualResetEventSlim では通常のイベント ハンドル待機を使用します。

参照

概念

待機ハンドル

AutoResetEvent

Semaphore と SemaphoreSlim

その他の技術情報

マネージ スレッド処理

スレッド処理オブジェクトと機能

SpinWait