调度任务以供将来执行

时间:2014-10-30 14:52:58

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

我查看过TaskTimer类API,但找不到有关如何安排Task以供日后执行的信息。 使用Timer类,我可以为将来的执行安排线程,但我需要安排TaskTask.Delay(...)个方法,但不确定延迟与计划类似。

编辑(澄清):我想在x分钟后启动任务。

2 个答案:

答案 0 :(得分:7)

您应该使用Task.Delay(内部使用System.Threading.Timer实现):

async Task Foo()
{
    await Task.Delay(TimeSpan.FromMinutes(30));
    // Do something
}

延迟被“执行”there is no thread被使用。当等待在计划执行之后结束工作时。

答案 1 :(得分:2)

我会改用this Timer(System.Timers.Timer)。它使用起来有点简单。将间隔设置为30并启动计时器,确保已过去的事件调用您想要发生的方法。如果你只希望它发生一次而不是每三十分钟发生一次,你可以在之后停止它。

来自链接的MSDN页面的代码示例:

// Create a timer with a two second interval.
aTimer = new System.Timers.Timer(2000);
// Hook up the Elapsed event for the timer. 
aTimer.Elapsed += OnTimedEvent;
aTimer.Enabled = true;