【发布时间】:2015-06-27 13:46:11
【问题描述】:
我正在编写一个 Windows 服务并使用 Timer 每分钟调用一个方法。 我有以下代码
protected override void OnStart(string[] args)
{
// Set up a timer to trigger every minute.
_timer = new System.Timers.Timer();
_timer.Interval = 60000; // 60 seconds
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Start();
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
StartProcessingWorkFlow();
}
但是我想用任务并行库替换计时器?
我阅读了Task.Delay(),但它似乎只工作了 1 次。
我希望每 1 分钟调用一次代码,直到它停止。
【问题讨论】:
-
听起来
Timer正是您所需要的。您仍然可以在Elapsed事件中启动Task,但Timer功能似乎非常适合您的需求...您有什么理由要删除计时器吗? -
不错的 sn-p,它很好地记录了您的问题:(
-
StartProcessingWorkFlow();是一种非常耗费资源的方法。所以我想利用 TPL 来使用多核。我想知道 TPL 是否有类似 TIMER 的东西。此外,如果需要,我可以传递取消令牌并停止处理。
标签: .net multithreading task-parallel-library c#-5.0