我如何每两周一个星期一和星期二运行石英计划?

时间:2015-03-30 03:17:04

标签: c# cron quartz-scheduler quartz.net cronexpression

我使用以下方式在星期一每两周运行一次计划。

ITrigger trigger = TriggerBuilder.Create()
                                    .StartAt(DateBuilder.DateOf(StartHour, StartMinute, StartSeconds, StartDate, StartMonth, StartYear))
                                    .WithCalendarIntervalSchedule(x => x.WithIntervalInWeeks(Int32.Parse(nWeekInterval)))
                                    .EndAt(DateBuilder.DateOf(0, 0, 0, EndDay, EndMonth, EndYear))
                                    .Build();

但是我如何使用单一时间表在星期一和星期二运行。请指教。

3 个答案:

答案 0 :(得分:5)

您可以使用DailyTimeIntervalScheduleBuilder

指定一周中的几天
var onMondayAndTuesday = DailyTimeIntervalScheduleBuilder.Create()
                         .OnDaysOfTheWeek(new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday });

var trigger = TriggerBuilder.Create()
                            .StartAt(DateBuilder.DateOf(StartHour, StartMinute, StartSeconds, StartDate, StartMonth, StartYear))
                            .WithSchedule(onMondayAndTuesday)
                            .WithCalendarIntervalSchedule(x => x.WithIntervalInWeeks(Int32.Parse(nWeekInterval)))
                            .EndAt(DateBuilder.DateOf(0, 0, 0, EndDay, EndMonth, EndYear))
                            .WithIdentity(triggerKey)
                            .Build();

答案 1 :(得分:1)

我会用两个不同的触发器创建一个作业。每个触发器每两周(或半个月)触发一次。

答案 2 :(得分:0)

使用以下表达式安排作业在星期一和星期二的候补时间运行。

0 0 0 1-7,15-21,29-31 * 1,2 *

以下是对表达式的描述。

0 - 0秒

0 - 0th

0 - 0th hr

1-7,15-21,29-31 - 在该月的另一周

  • - 任何月份

1,2 - 周一和周二

  • - 任何一年。