从日期开始每14天执行一次Hangfire作业

时间:2018-12-02 23:48:34

标签: c# .net hangfire

我能够使用Hangfire记录每两周的工作,

if (vm.ReportInterval == 14)
                        {
                            reportFrequency = Cron.DayInterval(14);
                        }

这正在起作用,并且正在执行应做的事情。

但是我想要的是在特定日期开始工作,然后每14天重复一次。

本质上,需要将第二个参数传递给cron.DayInterval。

示例(不支持此示例):

 if (vm.ReportInterval == 14)
               {
                  reportFrequency = Cron.DayInterval(14,new DateTime(2018,17,05));
               }

我查看了Cron类,但它没有受支持的方法:

enter image description here

在Hangfire上还有其他课程可以做这项工作吗?

另一种方法是每周做一次,然后

  • 传递自定义参数
  • 签入方法是否需要执行(与上次执行的日期不同)
  • 如果日期差异不是14天,则跳过

但是,如果有更好的方法,我真的不希望那样走。

1 个答案:

答案 0 :(得分:2)

您需要创建一个看起来像这样的RecurringJob:

RecurringJob.AddOrUpdate<IExportService>(
            "Export data",
            x => x.ExportToEmail(),
            "0 0 0 1/14 * ? *");

重要的一点是最后一个参数,它是一个cron表达式,它表示:

Run this job At 00:00:00am, every 14 days starting on the 1st, every month

如果您要创建另一个cron表达式,建议使用此在线生成器:

https://www.freeformatter.com/cron-expression-generator-quartz.html