【发布时间】:2017-04-24 16:50:11
【问题描述】:
我现在使用quartz 一段时间来重复任务,它工作得很好。出于某种原因,我需要创建一个在两天内运行的任务。这是我所做的实现:
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail jobWeekEnd = JobBuilderExtend.Create<CreateConsultationReplayJob>(() => new StandardContextProvider());
ITrigger triggerWeekend = TriggerBuilder.Create()
.WithIdentity("Foo", "Bar")
.WithCronSchedule("0 0 9 ? * SAT-SUN")
.ForJob(jobWeekEnd)
.Build();
scheduler.ScheduleJob(jobWeekEnd, triggerWeekend); // WORKS WELL
var jobNonWorkingDay = JobBuilderExtend.Create<CreateConsultationReplayJob>(() => new StandardContextProvider());
var trigger1 = TriggerBuilder.Create()
.WithIdentity("Foo2", "Bar")
.StartAt(new DateTimeOffset(new DateTime(2017, 04, 17, 09, 00, 00)))
.ForJob(jobNonWorkingDay)
.Build();
scheduler.ScheduleJob(jobNonWorkingDay, trigger1);
var jobNonWorkingDay2 = JobBuilderExtend.Create<CreateConsultationReplayJob>(() => new StandardContextProvider());
var trigger2 = TriggerBuilder.Create()
.WithIdentity("Foo3", "Bar3")
.StartAt(new DateTimeOffset(new DateTime(2017, 05, 01, 09, 00, 00)))
.ForJob(jobNonWorkingDay2)
.Build();
scheduler.ScheduleJob(jobNonWorkingDay2, trigger2);
trigger1 和 trigger2 似乎不是在正确的时间触发,而是每次我回收池时,并且随机地,最后一次出现是在 11:16:15。
关于我应该在哪里挖掘的任何线索?
【问题讨论】:
-
看来您使用的是 Quartz.NET,我编辑了您的问题以设置正确的标签。
-
@walen 感谢更新
-
在安排好作业后尝试启动调度程序。 1) scheduler.ScheduleJob(...) 2) scheduler.Start();
标签: quartz quartz.net