C# 如何在一天中的特定时间每天按 Quartz.net 触发例程

C# How to fire routine by Quartz.net every day at specific time of day

我不在开发电脑之前,但我得到了一个看起来可行的代码。

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 AM 触发作业。 任何人都可以确认上面的代码真的会在每天早上 8:00 AM 触发我的例行程序吗?

我问这种问题是因为我不在 dev pc 之前,所以我无法测试上面的代码是否可以正常工作?

我也很想知道我怎么能排除周六和周日,这样我的例程就不会火了。在哪里添加日名称 no 来触发我的例程。只有我的例程应该从周一到周五开火。

谢谢

要仅在工作日执行此操作,您可以使用这样的 cron 表达式

0 0 8 ? * MON-FRI *

用法描述here

你看起来像这样

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

这应该每天早上 8 点触发,周末除外

您可以使用此网站生成您的 cron 表达式:http://www.cronmaker.com/

如果你想在工作日 运行 它不使用 cron 表达式,你也可以使用:

    var trigger = TriggerBuilder
                 .Create()
                 .WithSchedule(CronScheduleBuilder
                                  .AtHourAndMinuteOnGivenDaysOfWeek(8,
                                                                    0,
                                                                    DayOfWeek.Monday,
                                                                    DayOfWeek.Tuesday,
                                                                    DayOfWeek.Wednesday,
                                                                    DayOfWeek.Thursday,
                                                                    DayOfWeek.Friday))
                 .Build();