2016-06-07 81 views
1

我使用Quartz库运行时间表task.I使用它像这样如何安排,在13.00^h

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.how我可以做那个。帮助你。

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

提示:为了调试目的,输出控制台上的下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找到。