Ich habe den Umplanungscode wie unten dargestellt geschrieben. Trotz des Terminplans "Alle 120 Sekunden wiederholen" wird die Execute() -Methode nach dem Abschluss der UpdateQuartzJobTrigger-Methode aufgerufen.Quartz.NET Reschedule funktioniert nicht wie erwartet
class Model : IJob
{
public void Execute(IJobExecutionContext context)
{
Debug.WriteLine("Executing Job: " + DateTime.Now.ToShortTimeString());
//Do some stuff
UpdateQuartzJobTrigger(context);
}
private void UpdateQuartzJobTrigger(IJobExecutionContext context)
{
// Trigger the job to run now, and then every 120 seconds
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(context.Trigger.Key.Name, context.Trigger.Key.Group)
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(120)
.RepeatForever())
.Build();
var result = context.Scheduler.RescheduleJob(context.Trigger.Key, trigger);
}
}
Mögliche Duplikat [Quartz.Net - Verzögerung eines einfachen Auslösers zu starten] (http://stackoverflow.com/questions/3515542/quartz-net-delay-a-imple-trigger-to-start) –
@AndrewMorton, diese beiden sind weit entfernt von Duplikaten. Das OP in Ihrer Frage versucht, Trigger zu verzögern, wenn ** ein Dienst gestartet wird. Ich versuche nicht, etwas zu verzögern, ich möchte, dass der Auslöser neu geplant und ausgelöst wird, wenn die Kriterien für diesen Zeitplan erfüllt sind. – Ashish