手动重置事件,自动重置事件。

12

在C#中,手动重置事件(manual reset event)和自动重置事件(autoresetevent)有什么区别?何时应该使用它们?将autoresetevent设置为true或false有什么区别?


1
这里有一篇带图片的很棒的解释 :) http://multithreads.blogspot.de/2007/09/eventwaithandler-autoresetevent-and.html - VladL
1个回答

16

对于ManualResetEvent,一旦你调用了Set(),你必须刻意调用Reset()将其设置回未信号状态,以便调用WaitOne()时会阻塞。

这对于AutoResetEvent是不必要的。

MSDN上对ManualResetEventAutoResetEvent的文档非常好。


请注意,AutoResetEvent.Set() 只释放一个等待线程,而 ManualResetEvent.Set() 会释放所有等待的线程并且不再阻止其他线程(直到您调用 Reset)。 - Olivier de Rivoyre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接