关键字:
WaitHandle,
封装等待对共享资源的独占访问的操作系统特定的对象。
使用此类的静态方法阻塞一个线程,直到一个或多个同步对象接收到信号。
WaitAll,等待所有指定执行线程结束之后返回。
WaitAny,等待任何一个指定执行线程结束之后返回。
AutoResetEvent,
该类表示一个本地等待处理事件,在释放了单个等待线程以后,该事件会在终止时自动重置。
ManualResetEvent
不会自动重新设置。
例子:
AutoResetEvent event1 = new AutoResetEvent(false);
AutoResetEvent event2 = new AutoResetEvent(false);
AutoResetEvent event3 = new AutoResetEvent(false);
public void Use3ChildThreads()
{
Thread vThread1 = new Thread(new ThreadStart(Method1));
Thread vThread2 = new Thread(new ThreadStart(Method2));
Thread vThread3 = new Thread(new ThreadStart(Method3));
AutoResetEvent[] vEventInProgress = new AutoResetEvent[3];
{
event1,
event2,
event3
}
vThread1.Start();
vThread2.Start();
vThread3.Start();
WaitHandle.WaitAny(vEventInProgress);
//continue code
}
public void Method1()
{
Thread.Sleep(1000);
event1.Set();
}
public void Method2()
{
Thread.Sleep(2000);
event2.Set();
}
public void Method3()
{
Thread.Sleep(3000);
event3.Set();
}