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 的影响。您可能还会注意到,基于计划的作业没有考虑执行时间,因此可能会导致这样的情况,即您有一个作业仍在进行中(从之前的 运行 开始),而另一个作业则按计划启动。
您可以使用以下模式代替简单的重复作业:
- 安排您的作业的单次执行
- 在执行结束时重新安排完成的作业。
这将帮助您避免上述情况,并允许您在手动触发后安排下一个 运行。
我有 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 的影响。您可能还会注意到,基于计划的作业没有考虑执行时间,因此可能会导致这样的情况,即您有一个作业仍在进行中(从之前的 运行 开始),而另一个作业则按计划启动。
您可以使用以下模式代替简单的重复作业:
- 安排您的作业的单次执行
- 在执行结束时重新安排完成的作业。
这将帮助您避免上述情况,并允许您在手动触发后安排下一个 运行。