Bauen Sie Ihren Auslöser für erstes Feuer auf diese Weise:
var triggerKey = new TriggerKey("simpleTrigger", "simpleTriggerGroup");
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(triggerKey)
.StartNow()
.Build();
Dann in der Execute-Methode Ihrer Jobklasse die Trigger ändern:
public void Execute(IJobExecutionContext context)
{
Console.WriteLine(string.Format("{0} hello this is a test", DateTime.Now.ToString("r")));
var newInterval = new Random().Next(20, 30);
// retrieve the trigger
var oldTrigger = context.Scheduler.GetTrigger(new TriggerKey("simpleTrigger", "simpleTriggerGroup"));
// obtain a builder that would produce the trigger
var tb = oldTrigger.GetTriggerBuilder();
// update the schedule associated with the builder, and build the new trigger
var newTrigger = tb.StartAt(DateTime.Now.AddSeconds(newInterval)).Build();
context.Scheduler.RescheduleJob(oldTrigger.Key, newTrigger);
Console.WriteLine("Trigger fired... changed interval to {0}", newInterval);
}
Der Auftrag wird in unterschiedlichen Intervallen ausgeführt werden .
Wo macht das Sinn? – Rabban
https://stackoverflow.com/questions/25930384/how-doo-i-force-a-quartz-net-job-to-restart-intervall-after-completion –
Kannst du nicht einfach den ursprünglichen Auslöser mit dem entfernen UnschedulerJob-Methode ?: http://quartznet.sourceforge.net/apidoc/1.0/html/html/ff17ee5c-4ba8-34e5-6dfc-600a13a6de2e.htm ... und dann einen neuen Trigger mit dem neuen Intervall mit dem ScheduleJob hinzufügen Methode: http://quarznet.sourceforge.net/apidoc/1.0/html/html/84be9956-052d-05d7-4366-0837fcd6d78b.htm Es gibt auch eine RescheduleJob-Methode, die beides tut: http: //quartznet.sourceforge .net/apidoc/1.0/html/html/44656a29-199e-7373-5547-e20318780802.htm – mm8