ManualResetEvent 和 ManualResetEventSlim

System.Threading.ManualResetEvent 類別表示本機等候控制代碼事件,它在收到信號之後必須以手動方式重設。 這個類別代表其基底類別 (System.Threading.EventWaitHandle) 的特別案例。 如需手動重設事件的用法和功能,請參閱 EventWaitHandle 概念文件。

ManualResetEvent 物件會一直維持收到信號的狀態,直到有人呼叫其 EventWaitHandle.Reset 方法為止。 任何數目的等候執行緒,或是等候收到信號的事件之執行緒,都可以在收到物件狀態信號時釋放。 ManualResetEvent 會指定 bManualReset 引數的 true,回應 Win32 CreateEvent 呼叫。

在 .NET Framework 4 版中,當您預期等候時間會很短時,以及當事件不會跨越處理序界限時,可以使用 System.Threading.ManualResetEventSlim 類別來提高效能。ManualResetEventSlim 會以忙碌狀態空轉一段很短暫的時間,藉此等候收到事件的信號。 當等候時間很短暫時,空轉所耗用的資源,會遠比使用等候控制代碼來等候事件少得多。 但是,如果過了特定一段時間還是沒收到事件的信號,ManualResetEventSlim 就會改為和一般情況一樣等候事件的控制代碼。

請參閱

概念

等候控制代碼

AutoResetEvent

Semaphore 和 SemaphoreSlim

其他資源

Managed 執行緒處理

執行緒處理物件和功能

SpinWait