Roy*_*mir 15 .net c# multithreading autoresetevent
我在想 ,
为什么我会永远想通过一个true在构造函数中AutoResetEvent ?
我创建了一个waitHandle任何打电话的人WaitOne()都会等待.
如果我用a来实例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");
}
Run Code Online (Sandbox Code Playgroud)
输出:
AAA...(delay)...BBB
Run Code Online (Sandbox Code Playgroud)
改为: EventWaitHandle _waitHandle = new AutoResetEvent (true);并且输出将是:
AAABBB
Run Code Online (Sandbox Code Playgroud)
问题:
true)?jer*_*enh 10
方案是第一个调用的线程WaitOne应该立即通过,而不会阻塞.
检查Silverlight文档中的AutoResetEvent(奇怪的是,.Net版本上的doc不一样):
指定
true用于在信号状态下initialState创建AutoResetEvent.如果你想让第一个等待AutoResetEvent立即释放的线程没有阻塞,这很有用."
| 归档时间: |
|
| 查看次数: |
5632 次 |
| 最近记录: |