使用timer vs Task并行库

时间:2015-04-20 17:33:39

标签: .net multithreading task-parallel-library c#-5.0

我正在编写一个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 个答案:

答案 0 :(得分:0)

可以在循环中使用Task完成:

while(true){
    await Task.Delay(60000);
    StartProcessingWorkFlow();
}

但我不认为这是最好的方法。尝试寻找Rx.net