HangFire 延迟任务与日期

HangFire delayed tasks with date

如何向 HangFire 任务添加日期? 例如,此代码添加 7 天:

BackgroundJob.Schedule(
    () => Console.WriteLine("Reliable!"), 
    TimeSpan.FromDays(7));

但是如果我需要在特定日期运行任务怎么办?

如果年份无关紧要,您可以为此使用 cron 表达式。大多数默认的 cron 实现(如 Hangfire 使用的 NCrontab)不包括年份字段。

BackgroundJob.Schedule(
    () => Console.WriteLine("Reliable!"), 
    "30 4 27 6 *");

这个作业会在每年的6月27日凌晨4点30分执行。

正如开发人员回答我的问题 here,您可以简单地使用日期而不是天。

BackgroundJob.Schedule(
    () => Console.WriteLine("Reliable!"), 
    new DateTime(2015, 08, 05, 12, 00, 00));

2015 年 5 月 8 日 00:00。

RecurringJobs 的答案是正确的

RecurringJob.Schedule(
    () => Console.WriteLine("Reliable!"), 
    "00 00 05 8 *");

每年 08 月 5 日 运行 00:00

使用 Cron.Yearly() 到 运行 每年在特定日期时间使用一次:

// Will run on 4th of July @ 8 AM UTC every year
BackgroundJob.Schedule(
    () => Console.WriteLine("Happy 4th of July!"), 
    Cron.Yearly(7, 4, 8, 0));