ManualResetEvent
是 C# 中的一個同步原語,它允許一個或多個線程等待,直到另一個線程設置事件。ManualResetEvent
的構造函數有兩個參數:bool initialState
和 bool throwOnTimeout
。initialState
參數指定事件的初始狀態,true
表示事件處于 set 狀態,false
表示事件處于 reset 狀態。throwOnTimeout
參數指定是否在等待超時時拋出異常。
處理 ManualResetEvent
中斷的方法如下:
ManualResetEvent
實例,并將其初始狀態設置為 false
。ManualResetEvent manualResetEvent = new ManualResetEvent(false);
WaitOne
方法等待事件。WaitOne
方法接受一個可選的超時參數,表示等待的最長時間。如果在該時間內事件被設置,WaitOne
方法將返回 true
,否則返回 false
。bool isEventSet = manualResetEvent.WaitOne(timeout);
Set
方法設置事件。這將喚醒所有等待該事件的線程。manualResetEvent.Set();
Reset
方法將事件重置為未設置狀態。這將導致所有等待該事件的線程在下次調用 WaitOne
方法時返回 false
。manualResetEvent.Reset();
Pulse
或 PulseAll
方法喚醒一個或多個等待該事件的線程。這將導致其中一個線程在調用 WaitOne
方法時返回 true
,然后該線程可以檢查中斷條件并相應地處理中斷。manualResetEvent.Pulse(); // 喚醒一個等待的線程
manualResetEvent.PulseAll(); // 喚醒所有等待的線程
通過以上方法,可以在 C# 中使用 ManualResetEvent
處理中斷。