Using Unschedulejob to change trigger details - what am I doing wrong? (Quartz.NET)

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);

            }


        }
+3
1
  • , UnscheduleJob . ,
  • 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);
        }
    

    , ,

        foreach (CronTrigger trigger in triggers.OfType<CronTrigger>())
        {
            trigger.CronExpressionString = txtCron.Text;
            sched.UnscheduleJob(trigger.Name, trigger.Group); //I would remove this 
            sched.RescheduleJob(trigger.Name, trigger.Group, trigger);
        }
    
  • , ,

+2

Source: https://habr.com/ru/post/1771202/


All Articles