2012-09-12 105 views
2

沒關係,這是一個新手的問​​題,我搜索通過網絡無法找到任何線索,這裏是我的問題來分配觸發:Quartz.Net - 如何使用的JobFactory

從例如usualy觸發和工作計劃通過使用IScheduler.ScheduleJob(job, trigger)現在我用的JobFactory我試圖用IScheduler.ScheduleJob(trigger)觸發的相關作業的名稱結束不能爲空例外

這裏是我的simplyfied代碼:

工作

class DummyJob : IJob 
{ 
    public void Execute(IJobExecutionContext context) 
    { 
     Console.WriteLine("executed"); 
    } 
} 

招聘廠

class JobFactory : IJobFactory 
{ 
    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) 
    { 
     return new DummyJob(); 
    } 
} 

主程序

class Program 
{ 
    static void Main(string[] args) 
    { 
     ISchedulerFactory sf = new StdSchedulerFactory(); 
     IScheduler sc = sf.GetScheduler(); 

     ITrigger trigger = TriggerBuilder.Create() 
      .ForJob() 
      .StartAt(DateTime.Now.AddSeconds(5)) 
      .Build(); 

     sc.JobFactory = new JobFactory(); 
     sc.ScheduleJob(trigger); 
     sc.Start(); 

     Console.WriteLine("waiting..."); 
     Console.ReadLine(); 
     sc.Shutdown(); 
    } 
} 

什麼想法?

回答

3

就調度問題而言,我認爲你不應該因爲使用自己的JobFactory而做任何不同的事情。

你的主程序無效,因爲它不知道你想要安排什麼工作。

你的例子可能是在簡化和沒有給出一個明確的想法,或者你正在努力實現與您的JobFactory什麼,但也許它值得指出的是一個的JobFactory的目的不是指定作業運行,但要指定如何一個特定的工作應該開始,因此期望bundle.JobDetail包含有關哪個工作運行的信息。

+0

非常感謝你的解釋很多 – bonjorno