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();
我不在开发电脑之前,但我得到了一个看起来可行的代码。
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();