2012-04-30 28 views
6

Tôi phải thực hiện công việc hàng ngày vào lúc nửa đêm Giờ Thái Bình Dương. Tôi đang sử dụng MVC3 với thư viện Quartz.NET.Làm thế nào để bắt đầu một công việc hàng ngày vào cùng một giờ trong Quartz.net?

Đây là mã của tôi:

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(); 
} 

Mã này làm cho công việc này chỉ chạy một lần vào lúc nửa đêm đầu tiên (trong Thái Bình Dương). Tôi đã đặt ở đó .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()) nhưng nó không hoạt động - công việc không lặp lại mỗi ngày.

Tôi có thể làm gì để hoạt động hàng ngày?

Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

4

Các tác vụ theo lịch của bạn có được ứng dụng web lưu trữ không? Nếu vậy, bạn có thể gặp vấn đề như vậy. Các ứng dụng web không thích hợp để chạy các tác vụ theo lịch trình. Bạn nên tạo cửa sổ dịch vụ lưu trữ các tác vụ theo lịch trình.

Nhưng cũng có một số điều bạn có thể kiểm tra:

  1. Hãy thử sử dụng khoảng thời gian ngắn (ví dụ: kiểm tra xem các công trình này nếu bạn đặt khoảng thời gian 1 phút).
  2. Hãy thử CronTrigger - Tôi đang sử dụng dịch vụ trong cửa sổ và hoạt động tốt.

Có một số bài viết giải thích những ưu và khuyết điểm của việc lưu trữ các tác vụ theo lịch trong ứng dụng web là gì. cái này: http://www.foliotek.com/devblog/running-a-scheduled-task/.

+0

Tôi đã sử dụng CronTrigger - nó không hoạt động hoàn hảo. Nó chạy không chính xác khi cần, nhưng đủ gần. – Marta

+0

CronTrigger trông hữu ích –

+0

Trong trường hợp của tôi, việc giảm khoảng thời gian từ 30 phút xuống còn 5 phút sẽ giúp công việc hoạt động bình thường. – dsm

Các vấn đề liên quan