指定重复作业或任务的执行时间的最佳方法是什么?

时间:2008-12-05 13:17:07

标签: .net logic scheduled-tasks recurrence

我正在寻找一种有效指定定期作业执行时间的方法,而无需将明确的执行时间写入数据存储区。换句话说,不是说'作业x下一次运行于11.12.08下午13.00',然后在作业运行后必须更新下一周的执行时间,我希望能够说'作业x运行于每个星期四下午13点'。我需要能够指定从几分钟到每月一次的任何重复范围。我的猜测是复发期越短,这就变得越困难。有什么想法吗?

注意:我不是在寻找有关安排机制的建议。我无法使用Windows Scheduler,Cron或创建Windows服务(我别无选择,只能在ASP.NET中使用后台线程)。

3 个答案:

答案 0 :(得分:3)

我已经看到广泛使用的cron表达式,它可能很适合作为内部表示格式。

答案 1 :(得分:1)

我同意kamal的观点,Cron可能是配置调度程序的最简单的解决方案。它非常灵活 - 您可以将其配置为执行任何操作(在合理范围内)。

我过去曾使用Quartz.NET进行日程安排。它提供了一个CronTrigger - 请参阅教程。您可以在运行Quartz调度程序的Web应用程序中创建一个线程。

答案 2 :(得分:0)

我实现了一些无人值守服务(用c#编写的Windows服务),使用cron来管理调度。模式功能强大,灵活。我们可以随时创建计划,只使用cron表达式。也许我错了,但我认为cron没有涉及的唯一时间表是我们是否想要本月的最后一天,但这绝不是所有服务的要求。

我从互联网上的一篇文章中复制了cron算法(由Atif Aziz开源),并在我的实用工具类中实现,工作了很多年。

在我的博客中查看更多详情: CronTab schedule parser algorithm

干杯!

罗伯特