2012-04-30 15 views
6

Muszę wykonywać pracę codziennie o północy czasu pacyficznego. Używam MVC3 z biblioteką Quartz.NET.Jak rozpocząć pracę codziennie o tej samej godzinie w Quartz.net?

Oto mój kod:

public static void ConfigureQuartzJobs() 
{ 
    ISchedulerFactory schedFact = new StdSchedulerFactory(); 

    IScheduler sched = schedFact.GetScheduler(); 

    DateTime dateInDestinationTimeZone = System.TimeZoneInfo 
     .ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date; 


    IJobDetail job = JobBuilder.Create<TimeJob>() 
     .WithIdentity("job1", "group1") 
     .Build(); 

    ITrigger trigger = TriggerBuilder.Create() 
     .WithIdentity("trigger1", "group1") 
     .StartAt(dateInDestinationTimeZone) 
     .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()) 
     .Build(); 

    sched.ScheduleJob(job, trigger); 

    sched.Start(); 
} 

Ten kod czyni to zadanie uruchomić tylko raz w pierwszej północy (Pacific Time). Ustawiłem tam .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()), ale nie działa - zadanie nie powtarza się codziennie.

Co mogę zrobić, aby działało codziennie?

Każda pomoc doceniona!

Odpowiedz

4

Czy zaplanowane zadania są hostowane przez aplikację internetową? Jeśli tak, mogą wystąpić takie problemy. Aplikacje internetowe nie są odpowiednie do uruchamiania zaplanowanych zadań. Powinieneś raczej utworzyć usługę Windows, która obsługuje zaplanowane zadania.

Ale są też pewne rzeczy można sprawdzić:

  1. spróbuj użyć krótszego okresu czasu (czyli sprawdzić, czy to działa, jeśli ustawić interwał do 1 minuty).
  2. Spróbuj CronTrigger - używam go w systemie Windows i działa dobrze.

Istnieje kilka artykułów, które wyjaśniają zalety i wady hostingu zaplanowanych zadań w aplikacji internetowej, np. ten: http://www.foliotek.com/devblog/running-a-scheduled-task/.

+0

Użyłem CronTrigger - nie działa idealnie. Nie działa dokładnie wtedy, kiedy powinien, ale wystarczająco blisko. – Marta

+0

CronTrigger wygląda na użyteczny –

+0

W moim przypadku zmniejszenie odstępu czasu z 30 minut do 5 minut powoduje, że praca działa poprawnie. – dsm

Powiązane problemy