一、 用法概述
manual發音:英[ˈmænjuəl]
直譯,手動重置事件
開發者的可以手動對執行緒間的互動進行手動控制.
二、建構函式
建構函式,如果為
true
,則將初始狀態設定為終止;如果為
false
,則將初始狀態設定為非終止。
public manualresetevent(bool initialstate //是否為 終止狀態
)
manualresetevent
is signaled (that is, if it is created by passing true
for initialstate), threads that wait on the manualresetevent
do not block.'>如果 manualresetevent
的初始狀態是終止狀態(即,如果其通過為 initialstate 傳遞true
建立),則等待 manualresetevent
的執行緒不阻塞。(亦即waitone方法不能阻塞當前執行緒的執行)
set()
method is called.'>如果初始狀態為非終止狀態(false),則執行緒呼叫 set()
方法後才不阻塞。
故:通常情況下,我們初始化為false(非終止狀態)
三、需要理解和掌握的幾個方法
1.waione
阻止當前執行緒,直到收到訊號(當然初始化狀態需要為false)
waitone有幾個過載方法,通過時間進行waitone,如果超時就不阻塞了.
其他幾個版本:msdn位址
2.set
將事件狀態設定為終止狀態,允許乙個或多個等待執行緒繼續。
3.reset
將事件狀態設定為非終止狀態,導致執行緒阻止。
四、demo(網友提供)
using system;using system.threading;
namespace threadingtester
} static void main(string args)
while(thrd1.isalive)
console.read();
} }}
五、使用場景
通常出現用於 不同功能的**且位於不同的執行緒之中時, 需要進行資料協同.
ManualResetEvent使用演示
manualresetevent 允許執行緒通過發訊號互相通訊。通常,此通訊涉及乙個執行緒在其他執行緒進行之前必須完成的任務。當乙個執行緒開始乙個活動 此活動必須完成後,其他執行緒才能開始 時,它呼叫 reset 以將 manualresetevent 置於非終止狀態。此執行緒可被視為控制 manu...
執行緒 ManualResetEvent 類
reset 當乙個執行緒開始乙個活動 此活動必須完成後,其他執行緒才能開始 時,它呼叫 reset 以將 manualresetevent 置於非終止狀態。此執行緒可被視為控制 manualresetevent。為了把狀態修改為無訊號的,必須呼叫reset 方法。waitone 呼叫manualre...
多執行緒中 ManualResetEvent 的用法
手動重啟 private manualresetevent manualreset new manualresetevent false if suspend suspendcommand new relaycommand o restorecommand new relaycommand o 它可...