manualresetevent 允許執行緒通過發訊號互相通訊。通常,此通訊涉及乙個執行緒在其他執行緒進行之前必須完成的任務。
當乙個執行緒開始乙個活動(此活動必須完成後,其他執行緒才能開始)時,它呼叫 reset 以將 manualresetevent 置於非終止狀態。此執行緒可被視為控制 manualresetevent。呼叫 manualresetevent 上的 waitone 的執行緒將阻止,並等待訊號。當控制線程完成活動時,它呼叫 set 以發出等待執行緒可以繼續進行的訊號。並釋放所有等待執行緒。
一旦它被終止,manualresetevent 將保持終止狀態(即對 waitone 的呼叫的執行緒將立即返回,並不阻塞),直到它被手動重置。
可以通過將布林值傳遞給建構函式來控制 manualresetevent 的初始狀態,如果初始狀態處於終止狀態,為 true;否則為 false。
public class eventclient : form
private void initializecomponent()
[stathread]
static void main()
// 建立執行緒
private void oncreatethreads(object sender,eventargs e)
// 執行緒執行體
protected void start()
private void onsignal(object sender,eventargs e)
private void onreset(object sender,eventargs e)
}
執行緒 ManualResetEvent 類
reset 當乙個執行緒開始乙個活動 此活動必須完成後,其他執行緒才能開始 時,它呼叫 reset 以將 manualresetevent 置於非終止狀態。此執行緒可被視為控制 manualresetevent。為了把狀態修改為無訊號的,必須呼叫reset 方法。waitone 呼叫manualre...
ManualResetEvent知識總結
一 用法概述 manual發音 英 m nju l 直譯,手動重置事件 開發者的可以手動對執行緒間的互動進行手動控制.二 建構函式 建構函式,如果為 true 則將初始狀態設定為終止 如果為 false 則將初始狀態設定為非終止。public manualresetevent bool initia...
多執行緒中 ManualResetEvent 的用法
手動重啟 private manualresetevent manualreset new manualresetevent false if suspend suspendcommand new relaycommand o restorecommand new relaycommand o 它可...