Quartz.NET 手动调用重复作业

Quartz.NET Manually invoked recurring job

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

我有时需要手动 运行 这项工作。如何强制 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 库实现?

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

您可以使用以下模式代替简单的重复作业:

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

这将帮助您避免上述情况,并允许您在手动触发后安排下一个 运行。