2014-03-31 25 views
0

我在C#中使用Quartz来构建后台作业。这里是我的代码:如何在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触发键。请帮帮我。非常感谢。

回答

0

从mermory,你可以这样做:(!说明 - 未经)

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); 

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

+0

什么是'Global'? – AnhTriet

+0

对不起,删除了“Global”命名空间。再一次,这是未经测试的,但希望能指出你正确的方向 – Alex

+0

对不起,你可以看一下'GetTrigger'签名吗?它只接受'TriggerKey',而不是触发器名称和组。 – AnhTriet

相关问题