Quartz.Net - 使用JobFactory时如何分配触发器

时间:2012-09-12 03:33:00

标签: c# quartz.net quartz.net-2.0

好吧,这是一个新手问题,我通过网搜索找不到任何线索,这是我的问题:

从示例usualy触发器和使用IScheduler.ScheduleJob(job, trigger)安排的作业现在我使用了JobFactory我尝试使用IScheduler.ScheduleJob(trigger)但以触发器相关的Job名称不能为空异常< / p>

这是我简单的代码:

作业

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

任何想法?

1 个答案:

答案 0 :(得分:3)

就调度问题而言,我认为你不应仅仅因为使用自己的JobFactory而做任何不同的事情。

您的主程序无效,因为它不知道您要安排的工作。

您的示例可能过于简化,并未提供明确的想法或您尝试使用JobFactory实现的目标,但也许值得指出JobFactory的目的不是指定哪个要运行的作业,但要指定如何特定作业应该启动,因此期望bundle.JobDetail包含有关要运行的作业的信息。