【问题标题】:What is the best way to specify execution time of recurring jobs or tasks?指定重复作业或任务的执行时间的最佳方法是什么?
【发布时间】:2010-09-25 12:29:22
【问题描述】:

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

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

【问题讨论】:

    标签: .net logic scheduled-tasks recurrence


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        干杯!

        罗伯托

        【讨论】:

          猜你喜欢
          • 2011-06-19
          • 2015-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-05
          • 2015-12-13
          • 1970-01-01
          • 2012-10-02
          相关资源
          最近更新 更多