如何安排每天 13:00 运行的任务

How to schedule a task that runs everyday in 13.00 h

我正在使用 Quartz 库来 运行 一个时间表 task.I 像这样使用它

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 我可以做吗that.hope 你的帮助。

您可以使用 WithSchedule 创建工作并使用 CronScheduleBuilder 定义工作频率 -

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

或者,您也可以在使用 WithCronSchedule

创建作业时使用 Cron 表达式
ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("mytrigger", "group1")
    .WithCronSchedule("0 00 13 * * ?")
    .ForJob("myJob", "group1")
    .Build();

可以找到更多详细信息 here

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