AutoResetEvent.WaitOne,超时与Thread.Sleep

Rys*_*gan 8 .net c# multithreading waithandle

我需要一个解决方案来执行任意暂停.延迟准确性无关紧要.WaitHandle.WaitOne方法(TimeSpan)Thread.Sleep方法之间的这种情况有什么实际区别.还有更好的解决方案吗?

Mar*_*mes 8

如果你的规范说"在继续之前总是等待至少两秒钟",请使用Sleep().

如果您的规范说"等待来自另一个线程的信号最多两秒钟并且如果超时则返回错误"使用事件对象.

它基本上就是这么简单.

基本上没有"性能差异".定时精度,因为两个调用使用相同的机制进行超时.

"更好"的解决方案 - 什么是"更好"?在什么方面更好?


san*_*ngh 6

1.Thread.Sleep(超时)导致无条件等待,然后恢复执行.

2.WaitOne(超时)导致线程等到任何一个

  • 事件被触发,
  • 达到超时