I've written the rescheduling code as shown below. Despite the schedule saying "repeat every 120 seconds", the Execute() method keeps getting called immediately after concluding the UpdateQuartzJobTrigger method.
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);
}
}