Thread.Sleep()的替代方法
每隔N分钟,我们要运行一个任务列表。因此,我们创建了一个带有
do { DoWork(); }while(!stopRequested)
现在我们希望在工作周期之间有一个停顿。每个人似乎都认为Thread.Sleep()是魔鬼。我曾经提到过使用Monitor /
Event的东西,但是我们没有其他人告诉我们要做工作。我们只想每隔N分钟做一次类似发条的工作。
那么,有没有其他选择?或者我是否找到Thread.Sleep的有效用法?
另一篇文章中的某人提到了WaitHandle.WaitOne()作为替代方法,但是您显然不能从非静态方法中调用它吗?或至少我不能,因为我得到了一个编译时错误。
非静态字段,方法或属性’System.Threading.WaitHandle.WaitOne(System.TimeSpan)’需要对象引用
回答:
你要叫WaitOne
上 一个WaitHandle
,肯定。这是一个实例方法。否则它将如何知道要等待什么?
最好 让
您对自己有反应而不是睡觉,这样一来您就可以毫无理由地注意到取消而无需等待几分钟。另一种替代方法WaitHandle
是使用Monitor.Wait
/
Pulse
。
但是,如果您使用的是.NET 4,我将研究Task Parallel Library提供的功能……它的级别比其他选项略高,并且通常是经过深思熟虑的库。
对于常规的工作任务,您可能需要使用Quartz.NETTimer
(或System.Threading.Timer
或System.Timers.Timer
)。
以上是 Thread.Sleep()的替代方法 的全部内容, 来源链接: utcz.com/qa/435688.html