【发布时间】:2017-12-19 18:46:11
【问题描述】:
我需要创建每两周的星期五运行的 cron 触发器
0 30 17 ? * FRI#2 *
是我设法创建的,但它生成的时间表只是在每月的第二个星期五运行。是否可以使用Cron Expression 实现我所需要的?
我在quartz.net 2.x 中听说了新的触发器类型,但在 XML 配置文件中找不到任何好的示例来配置它。我的意思是 CalendarIntervalTrigger 谁能帮助我获得想要的结果?
更新
var trigger = TriggerBuilder.Create()
.WithIdentity("InvoiceGenerator", "InvoiceGenerator")
.StartNow()
.WithSchedule(CalendarIntervalScheduleBuilder.Create().WithIntervalInWeeks(2)).Build();
这是我设法在 c# 端创建的(不幸的是没有 xml),但是当我在 trigger 上调用 GetNextFireTimeUtc 时,它总是返回 null。
更新 谢谢大家的回答,我想出的办法是创建每周五运行的正常 cron 触发器,并在执行时检查天气是否超过了科学上次运行的时间。
用c#是下面的代码sn-p。
var friday = new DateTime(2015, 04, 10, 17, 30, 00);
var trigger = TriggerBuilder.Create()
.WithIdentity("InvoiceGenerator", "InvoiceGenerator")
.WithCalendarIntervalSchedule(x => x.WithIntervalInWeeks(2))
.WithDescription("trigger")
.StartAt(friday)
.Build();
var nexRun = trigger.GetFireTimeAfter(friday);
nexRun 在这种情况下是正确的。 现在唯一剩下的就是找出我们可以使用 XML 配置它的人。
【问题讨论】:
-
GetNextFireTimeUtc 在第一次触发触发器之前为空
标签: c# xml quartz.net