1

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

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

4

3 回答 3

3

我已经看到广泛用于执行此操作的 cron 表达式,它可能作为一种内部表示格式工作得很好。

于 2008-12-05T13:32:55.090 回答
1

我同意 kamal 的观点,即 Cron 可能是配置调度程序的最简单的解决方案。它非常灵活——你可以配置它来做任何事情(在合理的范围内)。

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

于 2009-03-15T20:32:14.720 回答
0

我实现了一些无人值守的服务(用 c# 编写的 Windows 服务),使用 cron 来管理调度。该模式功能强大且灵活。我们可以在任何时间创建计划,只使用 cron 表达式。也许我错了,但我认为 cron 唯一没有涵盖的时间表是如果我们想要一个月的最后一天,但这从来都不是所有服务的要求。

我从互联网上的一篇文章(由 Atif Aziz 开源)中复制了 cron 算法,并在我的实用程序类中实现,多年来运行良好。

在我的博客中查看更多详细信息: CronTab 调度解析器算法

干杯!

罗伯托

于 2010-12-20T17:57:54.173 回答