我正在尝试使用quartz.net创建一个每1个月运行一次的工作
我对如何实现这一点感到有些困惑,任何人都可以就解决方案提出建议
感谢
P.S。我正在使用Quartz 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);
现在我需要每月触发
答案 0 :(得分:8)
这就是我实施我的解决方案的方式,就像你的一样,
基本上 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);
答案 1 :(得分:0)
我认为这个问题是通过制作一个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);
是谁试图帮助我
答案 2 :(得分:0)
您可以使用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();