I am using Quartz.NET for the system I am creating, where jobs are run through the Windows service and can be added and modified (including trigger data) on the ASP.NET page.
I have some problems, although I should be able to change trigger details, such as simpletrigger or cronexpression type, and I was told that I need to cancel the schedule and then reschedule it. The problem is that putting off the task and then reconfiguring completely excludes the trigger from the job for some reason. Here is my code for clicking the submit button on the edit page:
Trigger[] triggers = sched.GetTriggersOfJob(hdnID.Value, hdnGroupID.Value);
if (ddlScheduleType.SelectedIndex == 1)
{
sched.UnscheduleJob(triggers[0].Name, triggers[0].Group);
foreach (SimpleTrigger trigger in triggers.OfType<SimpleTrigger>())
{
if (ddlInterval.SelectedIndex == 0)
{
trigger.RepeatInterval = TimeSpan.Parse("00:00:01");
}
else if (ddlInterval.SelectedIndex == 1)
{
trigger.RepeatInterval = TimeSpan.Parse("00:01:00");
}
else if (ddlInterval.SelectedIndex == 2)
{
trigger.RepeatInterval = TimeSpan.Parse("01:00:00");
}
sched.RescheduleJob(trigger.Name, trigger.Group, trigger);
}
}
else
{
foreach (CronTrigger trigger in triggers.OfType<CronTrigger>())
{
trigger.CronExpressionString = txtCron.Text;
sched.UnscheduleJob(triggers[0].Name, triggers[0].Group);
sched.RescheduleJob(trigger.Name, trigger.Group, trigger);
}
}
sched.AddJob(jobDetail, true);
Any ideas why this is not working? Thanks
NEW:
if (ddlScheduleType.SelectedIndex == 1)
{
foreach (SimpleTrigger trigger in triggers.OfType<SimpleTrigger>())
{
Trigger newtrigger = new SimpleTrigger();
if (ddlInterval.SelectedIndex == 0)
{
newtrigger = TriggerUtils.MakeSecondlyTrigger();
}
else if (ddlInterval.SelectedIndex == 1)
{
newtrigger = TriggerUtils.MakeMinutelyTrigger();
}
else if (ddlInterval.SelectedIndex == 2)
{
newtrigger = TriggerUtils.MakeHourlyTrigger();
}
newtrigger.Name = triggers[0].Name;
newtrigger.Group = triggers[0].Group;
newtrigger.JobName = triggers[0].JobName;
newtrigger.JobGroup = triggers[0].JobGroup;
sched.RescheduleJob(trigger.Name, trigger.Group, newtrigger);
}
}
else
{
foreach (CronTrigger trigger in triggers.OfType<CronTrigger>())
{
CronTrigger newtrigger2 = new CronTrigger();
newtrigger2.Name = trigger.Name;
newtrigger2.Group = trigger.Group;
newtrigger2.JobName = trigger.JobName;
newtrigger2.JobGroup = trigger.JobGroup;
newtrigger2.CronExpressionString = txtCron.Text;
sched.RescheduleJob(trigger.Name, trigger.Group, newtrigger2);
}
}