Quartz.NET 手动调用循环作业

问题描述

我有 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 库实现?

解决方法

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

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...