2016-06-07 5 views
1

Я использую библиотеку Quartz запустить расписание task.I использовал его как этотКак запланировать задачу, которая проходит ежедневно в 13.00 ч

ISchedulerFactory scheduleFact = new StdSchedulerFactory(); 
      IScheduler scheduler = scheduleFact.GetScheduler(); 
      scheduler.Start(); 

      IJobDetail job = JobBuilder.Create<MyJob>() 
          .WithIdentity("myjob", "group 1") 
          .Build(); 


      ITrigger trigger = TriggerBuilder.Create() 
          .WithIdentity("mytrigger", "group 1") 
          .StartNow() 
          .WithSimpleSchedule(x => x 
           .WithIntervalInSeconds(60*60*12) 
           .RepeatForever()) 
          .Build(); 

      scheduler.ScheduleJob(job, trigger); 

это работает fine.that означает расписание работает для каждого 12 hours.but то, что я хочу, это запустить задачу каждый день, когда время 13.00. Как я могу это сделать. Надеюсь, ваша помощь.

+1

http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/simpletriggers.html – Rob

+0

Вы хотите использовать 'StartAt (дата)' где 'date' определяет будущее (ближайший) 13:00. Затем повторяйте каждые 24 часа, повторяйте навсегда. – Rob

ответ

3
var trigger = TriggerBuilder.Create() 
    .WithDailyTimeIntervalSchedule(s => s 
     .OnEveryDay() 
     .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(13, 00))) 
     .EndingDailyAfterCount(1)) 
.Build(); 

Tipp: вывести следующие 10 прогонов на консоль для цели отладки.

var times = TriggerUtils.ComputeFireTimes(trigger as IOperableTrigger, null, 10); 
foreach (var time in times) Console.WriteLine(time); 
0

Вы можете создать работу с WithSchedule и использовать CronScheduleBuilder определить частоту задания -

ITrigger trigger = TriggerBuilder.Create() 
    .WithIdentity("mytrigger", "group1") 
    .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(13, 00)) 
    .ForJob(myJobKey) 
    .Build(); 

Или, в качестве альтернативы вы можете также использовать выражение Cron при создании вашей работы с WithCronSchedule

ITrigger trigger = TriggerBuilder.Create() 
    .WithIdentity("mytrigger", "group1") 
    .WithCronSchedule("0 00 13 * * ?") 
    .ForJob("myJob", "group1") 
    .Build(); 

Подробнее подробности можно найти here.

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

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