我正在尝试创建一个作业与quartz.net将运行每1个月
我对如何实现这个有点困惑,谁能建议一个解决方案
感谢注:我使用的是石英版2.2.2.400
编辑:我做了一个每日触发
job = JobBuilder.Create<Jobs>()
.WithIdentity(Params.JobsKind.BlaBlaBla.ToString(), "group1")
.Build();
trigger = TriggerBuilder.Create()
.WithIdentity("triggerBlaBlaBla", "group1")
.WithDailyTimeIntervalSchedule(x => x.StartingDailyAt(Params.BlaBlaBLa)
.WithIntervalInHours(24)
.OnEveryDay())
.Build();
sched.ScheduleJob(job, trigger);
现在我需要每月触发
这就是我如何实现我的解决方案,就像你的,
基本上CronScheduleBuilder类有一个方法MonthlyOnDayAndHourAndMinute(天,小时,分钟)你输入你的作业运行的天,小时和分钟。
它工作得很好,而且更容易读懂,除非你习惯了unix的CRON作业。希望对你有帮助。
// define the job and tie it to class
IJobDetail job_tcs = JobBuilder.Create<DuesFeedbackJob>()
.WithIdentity("job_tcs", "group1")
.Build();
// Trigger the job to run every 2nd of the month at 1 am
ITrigger trigger_tcs = TriggerBuilder.Create()
.WithIdentity("Run Infinitely every 2nd day of the month", "Monthly_Day_2")
.StartNow()
.WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(2, 1, 0))
.Build();
// Tell quartz to schedule the job using our trigger
Console.WriteLine("Scheduling " + job_tcs);
scheduler.ScheduleJob(job_tcs, trigger_tcs);
我认为这个问题是通过制作cronExpression并将其作为参数添加到CronScheduleBuilder来处理的。
代码将是这样的:
static CronScheduleBuilder cronSchedule;
job = JobBuilder.Create<Jobs>()
.WithIdentity(Params.JobsKind.BlaBlaBla.ToString(), "group1")
.Build();
CronExpression cexp = new CronExpression("0 50 10 1 * ?");
cronSchedule = CronScheduleBuilder.CronSchedule(cexp);
trigger = TriggerBuilder.Create()
.WithIdentity("triggerBlaBlaBla", "group1")
.StartNow()
.WithSchedule(cronSchedule)
.Build();
sched.ScheduleJob(job, trigger);
感谢你对我的帮助
您可以使用CalendarIntervalSchedule,使用RepeatFrequency为1
trigger1 = TriggerBuilder.Create()
.ForJob(jobDetail1)
.StartAt(startDate)
.EndAt(endDate)
.WithIdentity(triggerName, "group1")
.WithCalendarIntervalSchedule(x => x.WithIntervalInMonths(RepeatFrequency))
.WithCalendarIntervalSchedule(x => x.WithMisfireHandlingInstructionFireAndProceed())
.Build();