我正在寻找一种有效指定定期作业执行时间的方法,而无需将明确的执行时间写入数据存储区。换句话说,不是说'作业x下一次运行于11.12.08下午13.00',然后在作业运行后必须更新下一周的执行时间,我希望能够说'作业x运行于每个星期四下午13点'。我需要能够指定从几分钟到每月一次的任何重复范围。我的猜测是复发期越短,这就变得越困难。有什么想法吗?
注意:我不是在寻找有关安排机制的建议。我无法使用Windows Scheduler,Cron或创建Windows服务(我别无选择,只能在ASP.NET中使用后台线程)。
答案 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
干杯!
罗伯特