I used the below way to run the schedule on every two weeks on mondays.
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();
But how can I use a single schedule to run on mondays and tuesdays as well. Please advice.
You can specify days of the week with 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();
I would create one job with two different triggers. Each trigger fires biweekly (or semi-monthly).
Use the following expression to schedule a job to run on alternate Mondays and tuesdays.
0 0 0 1-7,15-21,29-31 * 1,2 *
Here is how the expression is described.
0 -- 0th sec
0 -- 0th min
0 -- 0th hr
1-7,15-21,29-31 -- on alternate week of the month
- -- any month
1,2 -- On Monday and Tuesday
- -- Any year.
来源:https://stackoverflow.com/questions/29337861/how-can-i-run-a-quartz-schedule-on-mondays-and-tuesdays-every-two-weeks