2016-01-20 72 views
1

如何使用TPL基于计划运行任务。时间表将在xml中。如何安排任务在特定时间运行

我已经在这个环节 https://msdn.microsoft.com/en-us/library/dd997402.aspx

通过任务调度走了,但它并没有告诉如何来指定它应该运行的时间什么。

+2

TPL是关于最大化可用资源。如果您希望某些任务在特定时间运行,为什么不直接启用每分钟启动的[Timer](https://msdn.microsoft.com/en-us/library/system.timers.timer.aspx),请检查如果时间安排在时间表上,并运行任务? – Martheen

+0

另一种选择是使用[Windows任务计划程序](https://taskscheduler.codeplex.com/),因此您不需要其他服务/应用程序始终运行 – Martheen

+0

您不能使用TPL 。任务并行库与调度代码或Windows任务的执行无关。这是关于多线程和并行执行的。 –

回答

1

Task.Delay可能是你在找什么。

但请记住,TPL的主要目的是解决并行性和并发性问题......任务调度被视为管道 - 主要是实现细节。如果你的应用主要是关于调度,那么你可能会更好的使用像Quartz.NET这样的全面的作业调度框架。

0

看看微软的Reactive Framework(NuGet“Rx-Main”)。它可以让你做到这一点:

Observable 
    .Timer(new DateTimeOffset(2016, 4, 12, 12, 23, 16, TimeSpan.FromHours(-17))) 
    .Subscribe(x => 
    { 
     /* Do stuff */ 
    }); 

好的是,反应性框架与TPL很好地工作。