从示例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();
}
}
任何想法?
答案 0 :(得分:3)
就调度问题而言,我认为你不应仅仅因为使用自己的JobFactory而做任何不同的事情。
您的主程序无效,因为它不知道您要安排的工作。
您的示例可能过于简化,并未提供明确的想法或您尝试使用JobFactory实现的目标,但也许值得指出JobFactory的目的不是指定哪个要运行的作业,但要指定如何特定作业应该启动,因此期望bundle.JobDetail包含有关要运行的作业的信息。