我使用Quartz.NET每天在特定时间执行任务,这是我的代码:
public class TestSchedule : ISchedule
{
public void Run()
{
DateTimeOffset startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1")
.StartAt(startTime)
.WithDailyTimeIntervalSchedule(x => x.OnEveryDay().StartingDailyAt(new TimeOfDay(7, 0)).WithRepeatCount(0))
.Build();
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sc = sf.GetScheduler();
sc.ScheduleJob(job, trigger);
sc.Start();
}
}
我的代码正在运行,但问题是只运行一次(似乎是因为WithRepeatCount(0)
)
现在,怎么能说每天7点跑?
PS:我不想使用CronTrigger
来做到这一点。
答案 0 :(得分:4)
DailyTimeIntervalTriggerImpl仅支持 repeatCount 。
此触发器还支持“repeatCount”功能以结束触发 达到一定数量的计数后的开火时间。就像 SimpleTrigger,设置repeatCount = 0表示触发器将触发一次 只要!设置任何正数,然后触发器将重复计数+ 1次。与SimpleTrigger不同,是repeatCount的默认值 此触发器设置为REPEAT_INDEFINITELY而不是0。
Cron表达很漂亮,有tools的负载可以帮助你实现你想要的东西。
另一种选择是使用SimpleTriggerImpl并每24小时设置一次间隔:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1")
.StartAt(startTime)
.WithSimpleSchedule(x => x.RepeatForever().WithIntervalInHours(24))
.Build();