c# – Thread.Sleep()的替代软件

每N分钟我们想通过一个任务列表运行。所以我们创建了一个任务执行器

do { DoWork(); }while(!stopRequested)

现在我们想要在工作周期之间暂停。每个人似乎认为Thread.Sleep()是魔鬼。我看到提到使用监视器/事件的东西,但我们没有别人告诉我们做工作。我们只是想每N分钟做一些事情,像发条。

所以有一个替代或者我发现一个有效的使用Thread.Sleep?

有人在另一篇文章中提到WaitHandle.WaitOne()作为替代,但你不能从非静态方法调用显然?或者至少我不能,因为我得到一个编译时错误..

An object reference is required for
the non-static field, method, or
property
‘System.Threading.WaitHandle.WaitOne(System.TimeSpan)’

你必须调用WaitOne在WaitHandle,当然。它是一个实例方法。否则它将如何知道什么等待?

这绝对是更好的东西,你可以反应,而不是睡眠,所以你可以注意到取消,而不等待分钟没有理由。 WaitHandle的另一个替代方法是使用Monitor.Wait / Pulse。

但是,如果你使用.NET 4,我将研究任务并行库提供什么 – 它的级别比其他选项稍高,通常是一个精心考虑的库。

对于常规工作任务,您可能需要查看使用Timer(System.Threading.Timer或System.Timers.Timer),甚至可能是Quartz.NET

http://stackoverflow.com/questions/5424667/alternatives-to-thread-sleep

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – Thread.Sleep()的替代软件