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

C# 如何安排作业在Hangfire中的特定日期运行,c#,batch-processing,cronexpression,hangfire,C#,Batch Processing,Cronexpression,Hangfire,io支持对重复作业进行类似于CRON的调度。但我如何规定特定作业应在特定日期/时间运行一次,例如,作业应在2016年6月4日16:22运行,并且仅在该特定时间点运行 提出相同问题的类似方法可能是:Hangfire支持所描述的CRON表达式的子集有多大?(所描述的CRON表达式支持可以使用的“年”字段) 另外,如果我使用Hangfire进行作业处理,您认为Hangfire是安排一次性批处理作业的最佳选择吗?Hangfire不支持带年份的Cron表达式 要在特定时间点运行作业,请使用Backgrou

io支持对重复作业进行类似于CRON的调度。但我如何规定特定作业应在特定日期/时间运行一次,例如,作业应在2016年6月4日16:22运行,并且仅在该特定时间点运行

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


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

Hangfire不支持带年份的Cron表达式

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

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

BackgroundJob.Schedule(() => Console.Write("test"), new DateTime(2016, 6, 4, 16, 22, 0));
公共静态字符串调度([InstantHandle]表达式方法调用,DateTimeOffset排队);
BackgroundJob.Schedule(()=>Console.Write(“测试”),新的日期时间(2016,6,4,16,22,0));

您可以使用BackgroundJob.Schedule(Expression>methodCall,DateTimeOffsetdt)方法


在我的一个应用程序中,我们只安排一个作业在特定日期和时间运行一次。查看下面的代码

  public string Schedule(Expression<Action> methodToCall, DateTimeOffset enqueueAt)
    {
        return BackgroundJob.Schedule(methodToCall, enqueueAt);
    }
公共字符串调度(表达式方法调用,DateTimeOffset排队)
{
返回BackgroundJob.Schedule(methodToCall,enqueueAt);
}

其中,enqueueAt是要运行作业的日期时间。

当您试图通过调用
RecurringJob.AddOrUpdate(“test”,()=>Console.Write(“test”),“44 16 2016年2月2日”)在cron表达式中指定年份部分时
它引发此异常
{“'44 16 2 FEB*2016'不是有效的crontab表达式。它必须至少包含计划的5个组件(按分钟、小时、天、月、星期天的顺序)。}
这不是Hangfire支持的有效CRON格式。我知道这是一个老问题。但由于cron表达式不处理年份(分钟、小时、天、月、星期几),以下cron表达式:
22 16 4 6*
的意思是:“6月4日16:22。”-请访问以下网站:*
  public string Schedule(Expression<Action> methodToCall, DateTimeOffset enqueueAt)
    {
        return BackgroundJob.Schedule(methodToCall, enqueueAt);
    }