C#關於控制線程的停止和繼續

 

1、static EventWaitHandle eHandle = new EventWaitHandle(true, EventResetMode.ManualReset);

當前狀態下調用 eHandle.WaitOne(),不會導致阻塞, 需要調用Reset()阻塞,Set()放行。
WaitOne()->Run->Reset()->Stop->Set()->Run

2、static EventWaitHandle eHandle = new EventWaitHandle(false, EventResetMode.ManualReset);

當前狀態下調用 eHandle.WaitOne(),需要先Set()放行,不然門一直是關閉的
WaitOne()->Stop->Set()->Run

3、static EventWaitHandle eHandle = new EventWaitHandle(true, EventResetMode.AutoReset);

當前狀態下第一次調用WaitOne(),並不會阻塞,true表示放行的狀態,但是因爲是自動模式,走過門之後會自動把門帶上,第二次調用WaitOne(),會阻塞住,如果是手動模式,不去ReSet()的話,不管怎麼調用WaitOne()都會放行。
WaitOne()->Run->WaitOne()->Stop->Set->Run

4、static EventWaitHandle eHandle = new EventWaitHandle(false, EventResetMode.AutoReset);

WaitOne()->Stop->Set()->Run

自動模式下,如果在放行狀態,調用一次WaitOne()後都會自動關門阻塞。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章