如何安排在Hangfire中的特定日期运行作业

时间:2016-02-29 11:27:28

标签: c# batch-processing cronexpression hangfire

Hangfire.io支持对定期作业进行类似CRON的计划。但是,如何指定特定作业应在特定日期/时间运行一次,例如一份工作应该在2016年6月4日16:22运行 - 并且只在那个特定时间点运行?

提出相同问题的类似方式可能是:Hangfire支持的here所描述的CRON表达式的子集有多大? (所描述的CRON表达式支持可以使用的“年份”字段。)

另外,如果我使用Hangfire进行作业处理,您认为Hangfire是首先安排一次性批处理作业的最佳选择吗?

3 个答案:

答案 0 :(得分:0)

Hangfire不支持使用Year的Cron表达式。

要在特定时间点运行作业,请使用schedule类中的BackgroundJob方法重载。

public static string Schedule([InstantHandle] Expression<Action> methodCall, DateTimeOffset enqueueAt);

BackgroundJob.Schedule(() => Console.Write("test"), new DateTime(2016, 6, 4, 16, 22, 0));

答案 1 :(得分:0)

您可以使用BackgroundJob.Schedule(Expression&gt; methodCall,DateTimeOffsetdt)方法。

BackgroundJob.Schedule(methodCall, enqueueAt);

答案 2 :(得分:0)

在我的一个应用程序中,我们仅在特定日期时间内安排一次作业。请查看以下代码

  public string Schedule(Expression<Action> methodToCall, DateTimeOffset enqueueAt)
    {
        return BackgroundJob.Schedule(methodToCall, enqueueAt);
    }

enqueueAt是您要运行作业的日期时间。