2014-11-05 3 views
0

Я хотел бы сменить триггер одной из моих заданий. Итак, что я делаю, сначала посмотрим, есть ли в моей работе триггеры, связанные с ним. Если да, то Reschedule с новым триггером, который пользователь выбрал. Но когда я смотрю на мой AdoJobStore, нового триггера нет, и работа перестанет работать после перенастройки.Job Rescheduling не работает

Я поставил весь этот код в try-catch блоке, но я не получаю никаких Exception с, но это может быть потому, что я должен поймать JobExecutionException сек, а не просто Exception сек?

var jobKey = new JobKey(jobName, jobGroup); 
IScheduler sched = scheduler.GetScheduler(); 
IList<ITrigger> triggers = sched.GetTriggersOfJob(jobKey); 
if (triggers.Count != 0) 
{ 
    ITrigger existingTrigger = triggers[0]; 
    sched.UnscheduleJob(existingTrigger.Key); 
    ITrigger newTrigger = BuildTrigger(triggerName, triggerGroup); 
    IJobDetail job = sched.GetJobDetail(jobKey); 
    DialogResult dr = MsgBox.Show(string.Format("Confirm campaign '{0}' with the schedule '{1}'?", lblCampaignName.Text, txtbxMessage.Text), "Confirm Schedule", MsgBox.Buttons.YesNo, MsgBox.Icon.Question); 
    if (dr == DialogResult.Yes) 
    { 

     sched.RescheduleJob(existingTrigger.Key, newTrigger); 
     int updateResult = UpdateCampaignSchedule(); 
     if (updateResult == 1) 
      MsgBox.Show("Campaign schedule successfully updated!", "Edit schedule", MsgBox.Buttons.OK, MsgBox.Icon.Info); 
     else 
      MsgBox.Show("Unable to update campaign schedule in the database.", "Edit schedule", MsgBox.Buttons.OK, MsgBox.Icon.Error); 
    } 
} 
else 
{ 
.. 
} 

ответ

0

Это из-за звонка sched.UnscheduleJob(existingTrigger.Key. Это удаляет триггер из хранилища заданий. Таким образом, при вызове sched.RescheduleJob(existingTrigger.Key, newTrigger) кварц не может найти старый триггер, чтобы заменить его новым (если вы посмотрите на возвращаемое значение, это будет null), и он не выкинет исключение, если ваш новый триггер недействителен.

Удалить sched.UnscheduleJob(existingTrigger.Key, newTrigger, и он должен работать.

Смежные вопросы