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的信号。