我想使用不基于时间间隔的石英计划,而是在作业完成后重新安排作业。该工作可能在1分钟,2分钟等完成,但需要重新安排在1(或x)分钟后运行。
我已经尝试过以这种方式使用Reschedule,但工作没有被解雇。
第一次安排:
Trigger alertJobTrigger = new SimpleTrigger("alertJobTrigger",
"triggerGroup1",
DateTime.UtcNow.AddSeconds(60),
null,
0,
TimeSpan.Zero);
scheduler.ScheduleJob(alertJobDetail, alertJobTrigger);
尝试在完成工作后重新安排相同的工作:
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);
答案 0 :(得分:0)
如果您需要重新安排作业,重复间隔等于作业的执行时间,那么您必须指示触发器执行此操作。
否则,如果您只需要重复在相同时间段(重复出现)后执行的作业,则可以指定repeatCount = -1
和repeatInterval = TimeSpan.FromSeconds(..)
。如果被解雇的作业花费的时间比repeatInterval长,那么为了防止多次执行相同的作业,您可以在作业上使用[DisallowConcurrentExecution]
属性来防止这种情况发生。
答案 1 :(得分:0)
不要创建新的触发器。重新安排时使用相同的触发器。 这应该有效:
Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger","triggerGroup1");
trigger.set(); //set whichever values you want.
Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);