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



好吧,这是一个新手问题,我在网上搜索没有找到任何线索,这是我的问题:

从通常使用IScheduler.ScheduleJob(job, trigger)调度的触发器和作业的示例中,现在我使用了JobFactory,我尝试使用IScheduler.ScheduleJob(trigger),但以触发器的相关作业名称不能为空异常

这是我的简单代码:

作业

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

知道吗?

就日程安排而言,我认为您不应该因为使用自己的JobFactory而做任何不同的事情。

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

您的示例可能过于简化,没有给出一个清晰的想法,也没有给出您试图用JobFactory实现的目标,但也许值得指出的是,JobFactory的目的不是指定运行哪个作业,而是指定特定作业应该如何启动,因此需要捆绑包。JobDetail,包含有关要运行的作业的信息。

最新更新