【发布时间】:2012-01-02 21:26:29
【问题描述】:
我正在尝试创建一个触发器:
在一周中的选定日期(例如周一、周三、周四)运行一项工作,并在这些日子的每一天重复此工作 X 小时或分钟,持续时间为 Y 分钟。
我有一个在指定日期正确触发的 cron 触发器,但我无法让重复间隔正常工作。
谢谢
【问题讨论】:
标签: quartz.net
我正在尝试创建一个触发器:
在一周中的选定日期(例如周一、周三、周四)运行一项工作,并在这些日子的每一天重复此工作 X 小时或分钟,持续时间为 Y 分钟。
我有一个在指定日期正确触发的 cron 触发器,但我无法让重复间隔正常工作。
谢谢
【问题讨论】:
标签: quartz.net
如果问题是关于“如何创建仅在特定日期触发的触发器,在 X 小时/分钟内重复触发,间隔为 Y 分钟”,那么 Quartz.NET 1.0 就不可能。
但是,如果您愿意使用 Quartz.NET 2.0(目前处于 beta 2),您可以使用日历和 DailyTimeIntervalSchedule 轻松完成:
WeeklyCalendar cal = new WeeklyCalendar();
cal.SetDayExcluded(DayOfWeek.Monday, true);
sched.AddCalendar("excludedDays", cal, false, false);
var trigger = TriggerBuilder.Create()
.WithIdentity("test", "group")
.WithDailyTimeIntervalSchedule(
x => x.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 0))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(15, 0))
.WithIntervalInSeconds(5))
.ModifiedByCalendar("excludedDays")
.Build();
【讨论】:
您无法声明工作持续时间,但您可以轻松地从工作中确定持续时间。
无论如何,将根据您的规范安排作业的 cron 表达式是:
35 30 1/2 ? * MON,WED,THU *
1/2 表示该作业将从凌晨 1:30:35 开始每 2 小时运行一次。
您可以在this useful website. 上使用 cron 表达式。它使用 Quartz 的原始 Java 版本来创建和验证表达式,但是,.net 版本是 Java 的一个端口,所以结果应该对石英有效.net。
【讨论】: