2017-02-20 10 views
0

Я не до dev, но у меня есть код, который кажется работой.C# Как запускать процедуру Quartz.net каждый день в определенное время суток

private void QuartzTest_Load(object sender, EventArgs e) 
{ 
    // construct a scheduler factory 
    ISchedulerFactory schedFact = new StdSchedulerFactory(); 

    // get a scheduler 
    IScheduler sched = schedFact.GetScheduler(); 
    sched.Start(); 

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

    ITrigger trigger = TriggerBuilder.Create() 
     .WithDailyTimeIntervalSchedule 
     (s => 
      s.WithIntervalInHours(24) 
      .OnEveryDay() 
      .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(08, 00)) 
     ) 
     .Build(); 

    sched.ScheduleJob(job, trigger); 
} 

Кажется, что триггер срабатывает каждый день в 8:00 утра каждое утро. Кто-нибудь может подтвердить, что действительно ли вышеуказанный код будет запускать мою рутину каждый день в 8:00 утра каждое утро?

Я задал такой вопрос, потому что я не до dev pc, поэтому я не могу проверить приведенный выше код, чтобы он работал нормально или нет?

также мне интересно узнать, как я могу исключить субботу и воскресенье, в результате моя рутина не будет огнем. где добавить имя дня, чтобы не запускать мою рутину. только моя рутина должна быть с понедельника по пятницу.

благодаря

ответ

0

Чтобы сделать это только в будние дни вы можете использовать выражение хрон как этот

0 0 8 ? * MON-FRI * 

Использование описанного here

Посмотрел бы, как это для вас

ITrigger trigger = TriggerBuilder.Create() 
     .WithCronSchedule("0 0 8 ? * MON-FRI *") 
     .Build(); 

Это должно срабатывать каждый день в 8 утра, за исключением выходных

Вы можете использовать этот сайт, чтобы сгенерировать хроны выражения: http://www.cronmaker.com/

+0

чем смысл этого кода '* 1-5'? – Mou

+0

Я обновил ответ, поскольку первоначально использовал формат unix cron, и Quartz, похоже, немного отличается. – Mats391

 Смежные вопросы

  • Нет связанных вопросов^_^