내 임베디드 Quartz.net 스케줄러를 2.x로 업 그레 이드했는데 어느 시점에서 give up on giving my Zero Thread Schedulers unique names을 가지고 있었고 이제는 (아주 드물게) ZT 스케쥴러의 인스턴스를 만들려고하는 객체가 다른 객체가 이미 있기 때문에 예외를 throw합니다. ZT 스케줄러의 인스턴스는 인스턴스 내 모든 ZT 스케줄러는 이제 기본이 있기 때문에 'QuartzScheduler의 이름이기존 Quartz.net 스케줄러를 확인하는 방법은 무엇입니까?
내가 MySchedFactory.AllSchedulers.Count
을 사용하여 스케줄러 수를 확인 시도 MySchedFactory = new StdSchedulerFactory(properties)
를 호출 한 후 ... 예외가 발생하지만 StdSchedulerFactory는 ZT의 인스턴스를 생성 스케줄러가 인스턴스화 되 자마자 GetScheduler()
메서드가 호출되어 막 다른 끝이 아니므로 ...
StdSchedulerFactory
을 인스턴스화하기 전에 기존 스케줄러를 검사하는 다른 방법을 찾지 못했습니다. 이미 언급했듯이 인스턴스화되는 즉시 ZT 스케줄러의 인스턴스가 만들어 지므로 catch 블록에서 while 루프를 사용하게됩니다. 그냥 끔찍한 솔루션 그래서 나는 누군가가 기존의 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;
}
}
}
어떤 아이디어?
Execute 메서드에 아무 것도 전달할 수 없기 때문에 IJob 인터페이스를 구현하는 쿼츠 작업은이 참조를 얻기 위해 다른 작업을 예약해야합니까? –
MySchedulerFactorySingleton.GetInstance() MySchedulerFatorySingleton은 공용 정적 클래스입니다. – jvilalta