Изменение деталей задания Quartz.NET после того, как они были запланированы - PullRequest
0 голосов
/ 23 октября 2010

У меня есть приложение 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, безусловно, работает, так как я отлаживал программу, и программа проходит через это.

1 Ответ

1 голос
/ 31 января 2011

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

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

...