日期:2014-05-18  浏览次数:20971 次

autoresetEvent set()方法
code:

AutoResetEvent myResetEvent = new AutoResetEvent(false)

while(true){
myResetEvent.WaitOne();
.....//这里面还要调用别的方法。



试问:是不是每当myResetEvent.Set()调用了时,myResetEvent.WaitOne();后面的代码都会执行啊?不管上次的方法有没有执行完毕,只要调用set一下,就回立即执行后面的代码?

------解决方案--------------------


如果没有执行完毕就是没回 到 waitone ,

所以那个没有在 waitone 的 线程 会继续运行执行直到 while true 回到 waitone


如果只有这个线程在 waitone 里等候, 那么因为你已经set了,他会立即通过 waitone 继续执行






------解决方案--------------------
watione后面总要有个break吧,否则不是死循环了吗
------解决方案--------------------
C# AutoResetEvent用法详解
------解决方案--------------------
不管上次的方法有没有执行完毕,只要调用set一下,就回立即执行后面的代码?

不对。

事件一般用于多线程中。

myResetEvent.WaitOne(); //是等待一个信号,如果有信号就往下下次,否则就一直阻塞。

while(true)
myResetEvent.WaitOne(); //如果别处myResetEvent.Set()至少一次就能往下走。
.....//这里面还要调用别的方法。 //如果别处多set了,也得等这里做完,再回到上面,当然上一行代码不用再等了。