2013-04-08 1 views
2

내 임베디드 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; 
       }      
      } 
     } 

어떤 아이디어?

답변

2

스케쥴러 팩토리에 대한 참조를 새로 작성하는 대신 싱글 톤으로 유지하는 것은 어떻습니까?

+0

Execute 메서드에 아무 것도 전달할 수 없기 때문에 IJob 인터페이스를 구현하는 쿼츠 작업은이 참조를 얻기 위해 다른 작업을 예약해야합니까? –

+0

MySchedulerFactorySingleton.GetInstance() MySchedulerFatorySingleton은 공용 정적 클래스입니다. – jvilalta

1

Quartz.net 스케줄러는 싱글 톤이어야합니다. here을 읽을 수 있습니다.

+0

그런 경우라면 IJob 인터페이스를 구현하는 작업이 다른 작업을 예약해야합니까? 아시다시피 Execute 메서드에는 아무 것도 전달할 수 없습니다 ... –

+0

종속성 주입을 사용할 수 있습니다. http://asmiki.wordpress.com/2011/06/02/quartz-net-ijob-dependency-injection-with 구조 맵 / – LeftyX

관련 문제