我在想 ,

为什么我要在true的ctor中传递AutoResetEvent

我创建了一个waitHandle,以便任何将调用WaitOne()的人都将实际上等待

如果我使用true实例化它,就好像它已被立即发出信号-就像是正常的流程,无需等待。

  EventWaitHandle _waitHandle = new AutoResetEvent (false);

void Main()
{
  new Thread (Waiter).Start();
    Thread.Sleep (1000);
    _waitHandle.Set();

Console.ReadLine();
}
  void Waiter()
  {
    Console.WriteLine ("AAA");
    _waitHandle.WaitOne();
    Console.WriteLine ("BBBB");
  }

输出 :
AAA...(delay)...BBB

更改为:EventWaitHandle _waitHandle = new AutoResetEvent (true);,输出将为:
AAABBB

问题:
  • 为什么我要这样做? (传递true)?
  • 最佳答案

    场景是调用WaitOne的第一个线程应立即通过,而不会阻塞。

    检查Silverlight documentation for AutoResetEvent(奇怪的是,.NET版本上的文档不相同):

    10-08 00:42