如何在Quartz中重新安排触发器

时间:2014-03-31 16:44:45

标签: c# quartz-scheduler

我在C#中使用Quartz来构建后台作业。这是我的代码:

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

现在,我试图从另一个班级重新安排ParserTrigger。这是代码:

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

如您所见,有一个名为RescheduleJob(triggerKey, newTrigger)的函数,但我不知道如何从另一个类获取ParserTrigger的触发键。请帮我。非常感谢。

1 个答案:

答案 0 :(得分:1)

从内存中,您可以执行以下操作:

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

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

(注意 - 未经测试!)