【发布时间】:2010-03-16 13:04:37
【问题描述】:
使用计时器的最佳方法是什么。使用 System.Timer.Timer 类还是在带有 Thread.Sleep 语句的非终止循环中使用单个线程?
提前致谢
【问题讨论】:
-
取决于你想要达到的目标......如果你想要一些有计时目的的东西而不是你应该使用......等待它......计时器:D
标签: c# multithreading timer
使用计时器的最佳方法是什么。使用 System.Timer.Timer 类还是在带有 Thread.Sleep 语句的非终止循环中使用单个线程?
提前致谢
【问题讨论】:
标签: c# multithreading timer
一般来说,如果满足您的需要,请使用已有的组件。但是,System.Threading.Timer 使用 .NET 线程池,因此以下任何一种情况都会使其成为较差的候选对象:
ThreadPool 线程都是 MTA)【讨论】:
使用计时器。它就在那里,专门用于这个目的,那么你为什么不使用它呢?
【讨论】:
您提到的两种方法用于不同的结果。
计时器将触发事件并按预定时间间隔调用您的方法。他们可以在另一个实例运行时调用您的方法,除非您在处理开始时停止计时器 (DoWork) 并在完成后重新启动它(但是您可能会错过计时事件)。
一个循环和休眠的方法在忙时不会被调用。这里的“好处”是可以做DoWork,然后发现下一个定时器事件已经过去了,立即再次做DoWork。另一种方法是,无论您的 DoWork 方法花费了多长时间,您都可以在休息时间段内睡指定的时间。
【讨论】: