ManualResetEvent和AutoResetEvent在C#中用法比较类似,都是用来做线程控制的,这个从他们的名字
也可以看出。
先说相似点,他们都有对象方法:Set、Reset、WaitOne,用法类似,其中:
Set表示设置为有信号状态,这时调用WaitOne的线程将继续执行;
Reset表示设置为无信号状态,这时调用WaitOne的线程将阻塞;
WaitOne表示在无信号状态时阻塞当前线程,也就是说WaitOne只有在无信号状态下才会阻塞线程。
再说说不同点,
“Manual”表示手动的,“Auto”表示自动的,那么这个手动和自动的具体含义是什么呢?请看下面的例子:
public class ResetEventTest
{
public void Test()
{
Thread t1 = new Thread(new ThreadStart(thread1));
Thread t2 = new Thread(new ThreadStart(t