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了,也得等这里做完,再回到上面,当然上一行代码不用再等了。