【发布时间】:2015-08-12 07:16:06
【问题描述】:
我的域模型中有以下用于计划任务的配置设置,我正在尝试使用 Quartz.NET 2.3.3 创建触发器。
- 开始时间
TimeSpan - 结束时间
TimeSpan - 重复间隔
TimeSpan - 工作日启用
DayOfWeek[]
我可以使用此信息成功创建每日时间间隔触发器。
var trigger = TriggerBuilder
.Create()
.WithDailyTimeIntervalSchedule(c => c
.StartingDailyAt(scheduledTask.StartTime.ToTimeOfDay())
.EndingDailyAt(scheduledTask.EndTime?.ToTimeOfDay())
.OnDaysOfTheWeek(scheduledTask.WeekdaysEnabled.ToDaysOfWeek().ToArray())
.WithIntervalInSeconds((int)scheduledTask.RepeatInterval.TotalSeconds)
.InTimeZone(timeZoneInfo))
.Build();
但是,我配置的 EndTime 可能在 StartTime之前。例如,22:30 到 04:00(从晚上 10:30 运行到第二天凌晨 4:00,以指定的时间间隔重复,跨越午夜边界)。每日时间间隔时间表似乎不支持这一点。它只会在开始时触发一次,并且永远不会再次触发。
我尝试过使用CronTrigger,因为它可以跨越午夜边界,但这不能正确支持一天中的开始/结束时间(例如,0 30-0/30 22-4 ? * * 从晚上 10:00 到每 30 分钟运行一次凌晨 4:30。
有没有办法在 Quartz.NET 中创建这个时间表?
【问题讨论】:
标签: c# quartz.net