Triet Doan
Triet Doan

Reputation: 12085

How to re-schedule a trigger in Quartz

I'm using Quartz in C# to build a background job. Here is my code:

public class BackgroundConfig
{
    private IScheduler scheduler;

    public BackgroundConfig()
    {
        scheduler = StdSchedulerFactory.GetDefaultScheduler();
        scheduler.Start();
    }

    public void ScheduleParser()
    {
        IJobDetail job = JobBuilder.Create<ParseJob>()
            .WithIdentity("Parser", "Job")
            .Build();

        ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("ParserTrigger", "Trigger")
            .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(4, 0))
            .Build();

        scheduler.ScheduleJob(job, trigger);   
    }
}

Now, I'm trying to reschedule that ParserTrigger from another class. Here is the code:

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.RescheduleJob()

As you can see, there is a function called RescheduleJob(triggerKey, newTrigger), but I don't know how to get the trigger key of ParserTrigger from another class. Please help me. Thanks a lot.

Upvotes: 1

Views: 533

Answers (1)

Alex
Alex

Reputation: 38519

From mermory, you can do something like:

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

var trigger = scheduler.GetTrigger("ParserTrigger","Trigger");
scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);

(note - untested!)

Upvotes: 1

Related Questions