2010-03-31 3 views
0

내 .NET 응용 프로그램에서 Quartz를 사용하고 있습니다. 처음에는 Windows 서비스에서 사용했지만 작동하지 않으므로 테스트를 위해 정상적인 프로젝트로 옮겼습니다. 이 메인 코드입니다 :Quartz .NET이 트리거를 발생시키지 않습니다. 이유가 무엇입니까?

ISchedulerFactory schedFact = new StdSchedulerFactory(); 
IScheduler sched = schedFact.GetScheduler(); 
JobDetail jobDetail = new JobDetail("JobPrueba", null, typeof(JobPrueba)); 
Trigger trigger = TriggerUtils.MakeMinutelyTrigger(1, 3); 
trigger.StartTimeUtc = DateTime.Now; 
trigger.Name = "TriggerPrueba"; 
sched.Start(); 
sched.ScheduleJob(jobDetail, trigger); 

이것은 JobPrueba : 그것은 전혀 홈페이지에서 마지막 줄이 실행될 때 아무것도 아니에요

class JobPrueba : IStatefulJob 
{ 
    public JobPrueba() { } 

    public void Execute(JobExecutionContext context) 
    { 
     const string fic = @"C:\prueba.txt"; 
     string texto = DateTime.Now.ToString(); 
     System.IO.StreamWriter sw = new System.IO.StreamWriter(fic, true); 
     sw.WriteLine(texto); 
     sw.Close(); 
     System.Console.WriteLine("Hello world"); 
    } 
} 

, 프로그램이 종료되지 않습니다, 그러나 그것은 '아무튼 파일을 쓰거나 콘솔에 Hello World를 인쇄하지 마십시오.

누구든지 내가 뭘 잘못하고 있는지 알아?

답변

3

나는 그것이 시대의 문제라는 것을 발견했다. 나는 UTC + 2의 시간대에 살고 있기 때문에, 트리거의 StartTimeUtc를 DateTime.Now로 설정하면 UtcNow 대신 트리거가 2 시간 후에 시작될 필요가 없으며 발사해야한다고 생각했습니다. 바로 그 순간에 코드가 실행되었습니다.

게다가 내가 무슨 일이 있었는지를 기록하기 위해 타이머를 설정하고 그 로그에서 현재 시간 (DateTime.Now로)과 트리거의 StartTimeUtc를 인쇄했으며 분명히 동일했고 나중에 DateTime.Now StartTimeUtc보다 컸습니다. DateTime.UtcNow를 인쇄하면 문제가 발생했습니다.

관련 문제