ManualResetEvent使用演示

2021-06-13 08:56:32 字數 815 閱讀 7272

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 它可...