C#:如何在一天中的不同时间安排Quartz.net的多个例程

时间:2017-02-21 11:58:02

标签: c# quartz.net

我知道如何在一天的特定时间每天解雇我的一个例程。这是代码。

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开火

现在给我建议如何在一天中的不同时间点燃不同的例程。感谢

1 个答案:

答案 0 :(得分:2)

就像stuartd所说,你的工作需要多个触发器(例程2)。我还建议使用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();

然后用两个触发器安排你的工作:

sched.ScheduleJob(job, trigger1);
sched.ScheduleJob(job, trigger2);