Sir*_*ifi 4 quartz-scheduler quartz.net
我每天使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码正在运行,但是问题是现在只能运行一次(似乎是因为WithRepeatCount(0)),怎么能说每天7点运行?
PS:我不想CronTrigger这样做。
DailyTimeIntervalTriggerImpl仅支持repeatCount。
此触发器还支持“ repeatCount”功能,以在达到一定数量的计数后结束触发器触发时间。就像SimpleTrigger一样,设置repeatCount = 0意味着触发器将仅触发一次!设置任何正计数,触发器将重复计数+ 1次。与SimpleTrigger不同,此触发器的repeatCount的默认值设置为REPEAT_INDEFINITELY而不是0。
Cron表达式很漂亮,并且有很多工具可以帮助您实现所需的功能。
另一种选择是使用SimpleTriggerImpl并每24小时设置一次间隔:
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1")
.StartAt(startTime)
.WithSimpleSchedule(x => x.RepeatForever().WithIntervalInHours(24))
.Build();
Run Code Online (Sandbox Code Playgroud)