C#:如何在一天中的不同时间按 Quartz.net 安排多个例程一次
C#:How to schedule multiple routine by Quartz.net at different time of the day once
我知道如何每天在一天中的特定时间启动我的一个程序。这是代码。
IScheduler sched = null;
//construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
//get a scheduler
sched = schedFact.GetScheduler();
sched.Start();
IJobDetail job = JobBuilder.Create<frmMain>()
.WithIdentity("Job", "group")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(19, 07))
)
.Build();
sched.ScheduleJob(job, trigger);
假设现在我需要在一天中的不同时间触发许多例程一次。
例程 1 应在 08:00 时触发,例程 2 应在 15:00 时触发,例程 2 应在 18:00
时触发
现在给我建议我如何在一天中的不同时间启动不同的程序。谢谢
如 stuartd 所述,您的工作需要多个触发器(routine2)。我还建议使用 CronTrigger
而不是 SimpleTrigger
。您可以轻松创建一个 CronTrigger
:
var trigger1 = TriggerBuilder.Create()
.WithDescription(name)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(15, 0))
.Build();
var trigger2 = TriggerBuilder.Create()
.WithDescription(name)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(18, 0))
.Build();
然后只需使用 2 个触发器安排您的工作:
sched.ScheduleJob(job, trigger1);
sched.ScheduleJob(job, trigger2);
我知道如何每天在一天中的特定时间启动我的一个程序。这是代码。
IScheduler sched = null;
//construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
//get a scheduler
sched = schedFact.GetScheduler();
sched.Start();
IJobDetail job = JobBuilder.Create<frmMain>()
.WithIdentity("Job", "group")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(19, 07))
)
.Build();
sched.ScheduleJob(job, trigger);
假设现在我需要在一天中的不同时间触发许多例程一次。
例程 1 应在 08:00 时触发,例程 2 应在 15:00 时触发,例程 2 应在 18:00
时触发现在给我建议我如何在一天中的不同时间启动不同的程序。谢谢
如 stuartd 所述,您的工作需要多个触发器(routine2)。我还建议使用 CronTrigger
而不是 SimpleTrigger
。您可以轻松创建一个 CronTrigger
:
var trigger1 = TriggerBuilder.Create()
.WithDescription(name)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(15, 0))
.Build();
var trigger2 = TriggerBuilder.Create()
.WithDescription(name)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(18, 0))
.Build();
然后只需使用 2 个触发器安排您的工作:
sched.ScheduleJob(job, trigger1);
sched.ScheduleJob(job, trigger2);