Quartz Scheduler不支持多线程服务

时间:2013-06-03 11:47:20

标签: .net multithreading multiprocessing quartz-scheduler quartz.net

我有一段代码可以使用Quartz创建作业。此代码将由多个线程调用

 ISchedulerFactory fac = new StdSchedulerFactory();
                sched = fac.GetScheduler();

// schedele job

   sched.ScheduleJob(job1, trigger1);
                sched.Shutdown();

有时我在获取调度程序时发出错误消息

名称为“{0}”的计划程序已存在。

作为pere一些论坛suggeton如果我将getscheduler逻辑移动到单例类,它工作正常没有任何问题。我不确定为什么我们需要把它移到一个单独的类。

我真的不明白是什么导致了这个问题。

1 个答案:

答案 0 :(得分:0)

  

此代码将由多个线程调用

有了这个,隐含的是在实例化调度程序实例时调用线程之间可能会发生竞争条件。 并且应该防止创建具有相同名称的调度程序是合乎逻辑的。也许,创建调度程序实例的quartz中的代码不是线程安全的。 : - )