Triggers 使用Quartz重新安排一次性作业

Triggers 使用Quartz重新安排一次性作业,triggers,scheduling,jobs,quartz.net,Triggers,Scheduling,Jobs,Quartz.net,我希望使用quartz调度,而不是基于时间间隔,而是在作业完成后重新调度作业。作业可能在1分钟、2分钟等时间内完成,但需要重新安排在1(或x)分钟后运行 我已经试过用这种方式重新安排,但乔布斯并没有被解雇 第一次安排: 尝试在作业完成后重新安排同一作业: 如果需要以与作业执行时间相等的重复间隔重新安排作业,则必须指示触发器执行此操作 否则,如果您只需要重复在相同时间段(重复)后执行的作业,则可以指定repeatCount=-1和repeatInterval=TimeSpan.FromSecon

我希望使用quartz调度,而不是基于时间间隔,而是在作业完成后重新调度作业。作业可能在1分钟、2分钟等时间内完成,但需要重新安排在1(或x)分钟后运行

我已经试过用这种方式重新安排,但乔布斯并没有被解雇

第一次安排:

尝试在作业完成后重新安排同一作业:


如果需要以与作业执行时间相等的重复间隔重新安排作业,则必须指示触发器执行此操作


否则,如果您只需要重复在相同时间段(重复)后执行的作业,则可以指定
repeatCount=-1
repeatInterval=TimeSpan.FromSeconds(…)
。如果触发的作业需要更长的重复时间间隔,为了防止同一作业多次执行,您可以在作业顶部使用
[DisallowConcurrentExecution]
属性来防止重复执行。

不要创建新触发器。在重新调度时使用相同的触发器。 这应该起作用:

Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger","triggerGroup1");

trigger.set(); //set whichever values you want.

Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);

我在重新安排的触发器名称和触发器组中出错。它应该是重新安排的(“alertJobTrigger”、“triggerGroup1”…);请告诉我您在上面的答案中考虑了哪个版本的quartz.net。
Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger",
                                              "triggerGroup1");

Trigger newTrigger = new SimpleTrigger("alertJobTrigger",
                                        "triggerGroup1",
                                        trigger.JobName,
                                        trigger.JobGroup,
                                        DateTime.UtcNow.AddSeconds(60), 
                                        null, 
                                        0,
                                        TimeSpan.Zero);     

Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, newTrigger);
Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger","triggerGroup1");

trigger.set(); //set whichever values you want.

Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);