AutoResetEvent 與 ManualResetEvent 控制執行緒暫停及恢復運作 « 關於網路那些事...
阿新 • • 發佈:2018-12-23
C# - AutoResetEvent 與 ManualResetEvent 控制執行緒暫停及恢復運作
C# 有兩個類別可以用來調控執行緒
- AutoResetEvent
- ManualResetEvent
WaitOne 暫停執行緒
AutoResetEvent.WaitOne 方法可以讓執行緒進入 Join (WaitSleepJoin) 暫停狀態
Set 繼續執行緒動作
AutoResetEvent.Set 方法可以讓暫停狀態的執行緒恢復運作
ManualResetEvent 則需要呼叫 .Set 與 .Reset
這裡舉例,在 A B 兩個任務類別中
在 任務A 執行了 WaitOne() 先讓 任務A 進入 WaitSleepJoin Block 狀態
當 任務B 執行到偶數時,就執行 Set() 將 A任務 恢復運作
若是 ManualResetEvent 則需要再多加一次 Reset()
判斷 WaitOne
在實際應用時,會先判斷 WaitOne 的狀態,確定有進入暫停狀態,才進行 Set
範例
如果你喜歡我們的文章內容,請在這裡按個讚
Tweet