好吧,这是一个新手问题,我在网上搜索没有找到任何线索,这是我的问题:
从通常使用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,包含有关要运行的作业的信息。