最近将我的嵌入式Quartz.net调度程序升级到2.x,此时我不得不give up on giving my Zero Thread Schedulers unique names现在我遇到一个问题(很少)尝试创建ZT调度程序实例的对象抛出异常因为另一个对象已经实例化了ZT调度程序的实例,并且因为我的所有ZT调度程序现在都具有默认的' QuartzScheduler'这引发了一个例外......
我在调用MySchedFactory.AllSchedulers.Count
后尝试使用MySchedFactory = new StdSchedulerFactory(properties)
检查调度程序计数,但是StdSchedulerFactory在实例化后立即创建ZT调度程序的实例,而不是GetScheduler()
方法时这叫做死路一条......
在实例化StdSchedulerFactory
之前,我找不到任何其他检查现有调度程序的方法,正如我已经提到的,一旦实例化,它就会创建一个ZT调度程序的实例,所以我最终使用了在我的catch块中循环,这只是一个可怕的解决方案,所以我希望有人知道检查现有ZT调度程序的更好方法...
try
{
//setting properties
MySchedFactory = new StdSchedulerFactory(properties);
BaseScheduler = schedFactory.GetScheduler();
}
catch (Exception ex)
{
var exMsg = ex.InnerException == null ?
ex.Message :
ex.Message + Environment.NewLine + ex.InnerException.Message;
while (exMsg.Contains("Scheduler with name 'QuartzScheduler' already exists"))
{
try
{
MySchedFactory = new StdSchedulerFactory(properties);
BaseScheduler = schedFactory.GetScheduler();
}
catch (Exception vex)
{
exMsg = vex.InnerException == null ?
vex.Message :
vex.Message + Environment.NewLine + vex.InnerException.Message;
}
}
}
有什么想法吗?