我需要按照两种不同的时间表(早上和下午)开展工作。我知道如何在一个时间表上运行它,但不知道如何设置它以便2个计划触发这个工作
var saferWatchJobDetail = JobBuilder.Create<SaferWatchProcessor>().Build();
var swtriggerMorning = TriggerBuilder.Create().WithCronSchedule("0 10 6 ? * MON-SUN *", cs => cs.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))).Build();
var swtriggerAfternoon = TriggerBuilder.Create().WithCronSchedule("0 10 13 ? * MON-FRI *", cs => cs.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))).Build();
this.scheduler.ScheduleJob(saferWatchJobDetail, swtriggerMorning);
根据文档,似乎我需要使用ScheduleJob
覆盖ISet<ITrigger>
,但我不确定两件事:
ISet
的内容是什么以及如何实例化此对象?replace
是什么?不知道我该怎么用它。什么是&#34;关键&#34;?来自文档:如果已存在任何给定的作业或触发器(或更多) 具体来说,如果键不唯一)并且替换参数是 如果没有设置为true,则会抛出异常。
答案 0 :(得分:2)
如果你想使用最终为我工作的触发器,你就是这样做的:
var triggerSet = new Quartz.Collection.HashSet<ITrigger>();
var saferWatchJobDetail = JobBuilder.Create<SaferWatchProcessor>().Build();
var swtriggerMorning = TriggerBuilder.Create().WithCronSchedule("0 10 6 ? * MON-SUN *", cs => cs.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))).Build();
var swtriggerAfternoon = TriggerBuilder.Create().WithCronSchedule("0 10 13 ? * MON-FRI *", cs => cs.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"))).Build();
triggerSet.Add(swtriggerMorning);
triggerSet.Add(swtriggerAfternoon);
this.scheduler.ScheduleJob(saferWatchJobDetail, triggerSet, true);