Изменение сведений о задании Quartz.NET после того, как оно было запланировано

У меня есть приложение Quartz.NET, где мне нужно, чтобы администраторы могли изменять детали задания - в основном информацию в каждой карте данных заданий, а также такие вещи, как триггеры - вот мой код, который я использую

   protected void ButtonSubmit_Click(object sender, EventArgs e)
    {
        JobDetail jobDetail = sched.GetJobDetail(hdnID.Value, hdnGroupID.Value);
        jobDetail.JobDataMap["idname"] = txtName.Text;
        jobDetail.JobDataMap["initialPath"] = TextBox1.Text;
        jobDetail.JobDataMap["targetPath"] = TextBox2.Text;
        jobDetail.JobDataMap["regex"] = TextBox3.Text;
        jobDetail.JobDataMap["overrideemails"] = txtEmails.Text;
        jobDetail.JobDataMap["flush"] = chkflush.Checked;
        jobDetail.JobDataMap["impUsername"] = txtImpUsername.Text;
        jobDetail.JobDataMap["impDomain"] = txtImpDomain.Text;
        jobDetail.JobDataMap["impPassword"] = txtImpPassword.Text;
        Trigger[] triggers = sched.GetTriggersOfJob(hdnID.Value, hdnGroupID.Value);

        if (ddlScheduleType.SelectedIndex == 0)
        {
            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("00:00:01");
                }
            }
        }

        else
        {
            foreach (CronTrigger trigger in triggers.OfType<CronTrigger>())
            {
                trigger.CronExpressionString = txtCron.Text;

            }
        }


    }

(Я знаю, что то, что я делаю с циклами foreach, глупо, но есть только один триггер с заданием, и это фрагмент кода, который я получил здесь).

Проблема в том, что страница возвращается обратно нормально, а новые значения все еще остаются в текстовых полях. Но когда я снова иду просматривать работу, вообще ничего не меняется. Что я делаю неправильно? Это сбивает с толку, так как ошибок нет вообще.

Обратите внимание, что скрытые поля также установлены правильно.

Спасибо

Событие ButtonSubmit_Click, безусловно, работает, поскольку я отладил программу, и программа проходит через это.


person Chris    schedule 22.10.2010    source источник


Ответы (1)


Экземпляр, который вы получаете, вызывая sched.GetTriggersOfJob и sched.GetJobDetail, является клоном реальных триггеров/заданий. Ваши изменения в этих объектах не используются планировщиком до тех пор, пока вы не перепланируете измененный триггер или не добавите измененное задание с измененным триггером.

Я думаю, вы должны иметь возможность использовать RescheduleJob если вы измените только триггеры и сможете удалить исходный триггер и добавить новый.

person tobsen    schedule 31.01.2011