I'm using Quartz
library to run a schedule task.I used it like this
ISchedulerFactory scheduleFact = new StdSchedulerFactory();
IScheduler scheduler = scheduleFact.GetScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<MyJob>()
.WithIdentity("myjob", "group 1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("mytrigger", "group 1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(60*60*12)
.RepeatForever())
.Build();
scheduler.ScheduleJob(job, trigger);
this works fine.that means the schedule runs for every 12 hours.but what I want is to run the task everyday when the time is 13.00.how can I do that.hope your help.
var trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(s => s
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(13, 00)))
.EndingDailyAfterCount(1))
.Build();
Tipp: Output the next 10 runs on console for debugging purpose.
var times = TriggerUtils.ComputeFireTimes(trigger as IOperableTrigger, null, 10);
foreach (var time in times) Console.WriteLine(time);
You can create a job with WithSchedule
and use CronScheduleBuilder
to define the job frequency -
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("mytrigger", "group1")
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(13, 00))
.ForJob(myJobKey)
.Build();
Or, alternatively you can also use Cron expression while creating your job with WithCronSchedule
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("mytrigger", "group1")
.WithCronSchedule("0 00 13 * * ?")
.ForJob("myJob", "group1")
.Build();
More details can be found here .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.