每28天使用hangfire运行一次重复的后台工作

时间:2018-03-15 07:49:50

标签: asp.net hangfire

请以任何方式知道如何设置每28天运行一次的定期后台工作。这项工作应该基于28天而不是本月的28天运行。这是我目前的实施。

   string CropExpression = "0 20 */28  * * ";
   RecurringJob.AddOrUpdate(() => _chargesJob.ChargeCustomerAccountMonthly(account.Id),CropExpression); 

这个当前的实现在每个月的28日运行,这对我的应用程序来说并不理想。我想要实现的是28天应该根据当前的日期时间来计算。     例如,如果Datetime.now = 2018/3/15,则定期作业应从该日期开始计算,并在下个月开始计算,直至达到28天。

2 个答案:

答案 0 :(得分:0)

您可以简单地设置延迟28天的工作。然后,当此作业执行时,设置另一个作业,延迟28天。

有关详细信息,请参阅http://docs.hangfire.io/en/latest/background-methods/calling-methods-with-delay.html

但基本的想法是:

public void Schedule()
{
    BackgroundJob.Schedule(
        () => {
           DoYourActualWork();
           Schedule();
        },
    TimeSpan.FromDays(28));
}

答案 1 :(得分:0)

你可以使用这样的东西

BETWEEN