我需要一个解决方案来执行任意暂停。延迟准确性无关紧要。 WaitHandle.WaitOne Method (TimeSpan)和Thread.Sleep Method之间的这种情况有何实际差异。有没有更好的解决方案?
答案 0 :(得分:7)
如果你的规范说明了“等待至少等待两秒钟才能继续'”,请使用“睡眠”()。
如果你的规范说的是'等待来自另一个线程的信号最多两秒钟,如果超时则返回错误'使用事件对象。
基本上就这么简单。
基本上没有'性能差异'回覆。时间精度,因为两个调用使用相同的超时机制。
'更好的'解决方案 - 什么是更好?&#39 ;?在哪方面更好?
答案 1 :(得分:5)
1.Thread.Sleep(timeout)导致无条件等待,然后恢复执行。
2.WaitOne(超时)导致线程等到
答案 2 :(得分:1)
我反对永远使用Thread.Sleep(...)
...只是因为我不喜欢不必要地阻塞线程...所以使用WaitHandle
我认为是优越的选择。
<强>替代强>
如果你的代码优雅会受到使用WaitHandle
的影响,那你考虑过await Task.Delay(...)
吗?这将使Thread.Sleep(...)
的功能与{{1}}相似,而不会阻塞该线程。