0

我有一段代码将使用 Quartz 创建工作。此代码将被多个线程调用

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

// schedele job

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

有时我在获取调度程序时收到错误消息

名称为“{0}”的调度程序已存在。

根据一些论坛的建议,如果我将 getscheduler 逻辑移至单例类,它可以正常工作,没有任何问题。我不确定为什么我们需要将其移至单例类。

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

4

1 回答 1

0

此代码将被多个线程调用

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

于 2013-06-04T03:48:14.830 回答