【问题标题】:Quartz.NET Manually invoked recurring jobQuartz.NET 手动调用重复作业
【发布时间】:2021-05-28 06:29:50
【问题描述】:

我有 ASP.NET Core 应用程序,我正在使用 Quartz.NET 进行重复作业,该作业每 60 秒运行一次我的 TestMethod(),它运行良好。

我需要手动运行此作业。如何强制 Quartz.NET 在手动运行 60 秒后进行下一次递归调用?

这是我需要完成的:

00:01:00 -> Automatic run of TestMethod();
00:02:00 -> Automatic run of TestMethod();
00:02:10 -> Manual run of TestMethod();
00:03:10 -> Automatic run of TestMethod(); (Note: 60 seconds after last run)
...

也许 Hangfire 库可以做到这一点?

【问题讨论】:

    标签: asp.net asp.net-core quartz-scheduler quartz.net hangfire


    【解决方案1】:

    我猜你不能使用 Quartz 或 Hangfire 做到这一点。基于计划的作业通常不受手动运行的影响。您可能还会注意到,基于计划的作业不考虑执行时间,因此可能会导致您有一个作业仍在进行中(从上一次运行开始)而另一个按计划启动。

    您可以使用以下模式,而不是使用简单的重复作业:

    1. 安排一次作业的执行
    2. 在执行结束时重新安排已完成的作业。

    这将帮助您避免上述情况,还可以让您在手动触发后安排下一次运行。

    【讨论】:

    • 这是我已经在我的应用程序中所做的。我在计划任务中进行重新安排调用,以保持运行之间的 60 秒时间。它还允许我进行手动调用,只需要在 60 秒后重新安排工作即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2013-02-01
    • 2010-11-29
    • 2011-10-09
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多