ManualResetEvent知識總結

2022-01-11 11:51:03 字數 1438 閱讀 3136

一、 用法概述

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