3
我正在使用Quartz.NET作为我创建的系统,其中作业通过Windows服务运行,并且可以在ASP.NET页面中添加和编辑(包含触发器详细信息)。使用Unschedulejob修改触发器的详细信息 - 我做错了什么? (Quartz.NET)
虽然我有一些问题 - 我需要能够修改触发器的详细信息,例如简单触发器或cronexpression的类型,而且我被告知需要暂时不调度工作,然后重新计划它。问题是,没有计划工作,然后重新安排由于某种原因完全从工作中删除触发器。这里是我在编辑页面点击Submit按钮时的代码:
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);
任何想法为什么这不起作用?由于
新:
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);
}
}
干杯好友,这很好 - 但如果我想改变一个SimpleTrigger到一个CronTrigger它似乎不工作,它只是保留旧的 – Chris 2010-10-25 13:14:59
你可以发布你用来代替SimpleTrigger的代码CronTrigger? – 2010-10-25 13:16:38
刚发布新代码:) – Chris 2010-10-25 13:38:14