private static ManualResetEvent mre = new ManualResetEvent(false);
main(){
Thread t = new Thread(ThreadProc);
t.Name = "Thread_1" ;
t.Start();
}
ManualResetEvent 對象控制的是mre 這個對象 調用了set() reSet() waitone的線程。如果還有一個mre2這個不會相互干擾。
當子線程 Thread_1 調用 waione() 那麼這個線程將會暫停 直到 mre對象在其他線程中被調用Set()。的時候後纔會繼續。
set()方法的意思是好了我給mre一個信號 所有被mre這隻爲waione阻塞暫停的 線程 重新開始運行。
reSet() 的意思是 調用了set()的mre已經把信號置爲了可運行了,所以子線程調用waitone的時候會發現 已經被set信號了,所以會繼續運行,但是調用了reSet()後,這個信號再次被初始化,也就是 子線程調用waitone的時候會再次需要等等mre的信號。