【发布时间】:2013-07-20 07:30:41
【问题描述】:
我们正在开发一个自定义调度程序类,它应该能够定期调用任务。
我们正在考虑两种可能的方法:
对于每个周期为 X 秒的任务,创建自己的计时器,其间隔等于任务的周期,或者
创建一个计时器,并在每个滴答声中重新计算其间隔,迭代所有任务并找到时间最接近的一个?
第一种方法似乎更简单直接,但我不知道创建 10 个或 20 个定时器是否昂贵。
您如何看待,从性能的角度来看,哪一个更好?
【问题讨论】:
-
我们讨论了多少个任务,您希望它们能够同时运行吗? (您的第二种方法不允许这样做。)
-
好吧,我们正在谈论一些糟糕的数十个任务。任务应该能够同时运行。当定时器的回调执行时间长,大于定时器间隔时,是否会发生下一个定时器滴答?
-
我在 IScheduler 接口后面实现了不同的方法。在某些情况下,每 X 毫秒检查一次任务的简单计时器就足够了。
-
@MikhailBrinchuk:这取决于您所说的计时器类型。如果需要很长时间,您是否希望同时执行相同的回调多次?
-
我想到了
System.Threading.Timer,我确实希望回调同时执行多次。
标签: c# .net architecture scheduled-tasks