2014-10-30 72 views
4

我已经查看了TaskTimer类API,但未能找到有关如何安排Task以备将来执行的信息。 使用Timer类,我可以安排线程以备将来执行,但我需要安排Task s。 Task.Delay(...)方法,但不确定延迟是否类似于调度。调度任务以供将来执行

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

+0

这取决于你正在尝试做的。你想在某段时间过后发生什么事?使用计时器。 “未来执行”究竟意味着什么? – 2014-10-30 14:54:29

+0

是的,让我们说30分钟后,我想启动任务做一些操作。 – newprint 2014-10-30 14:55:34

+1

'Task.Delay'内部使用'Timer',是的答案是你正在寻找'Timer'。在.net框架中有几个计时器,为您的场景选择合适的计时器。 – 2014-10-30 14:59:26

回答

4

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

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

虽然 “已执行” 的延迟被使用there is no thread。当等待结束后,它将被安排执行。

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;