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);