具有延迟时间的重复作业

Recurring Job with delay time

我使用的是 Hangfire 版本“1.6.8”。我想在某些 DateTime 之后使用 Cron.Daily 创建定期作业。是否可以创建具有延迟时间的循环作业?

提前致谢

我想不出任何特别干净的方法。

您可以探索使用 hangfire 计划作业创建 RecurringJob 的途径:

new BackgroundJobClient().Schedule(() => Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World"), Cron.Daily()), startDateTime)

可以将其设置为 运行 计划作业,紧接在定期作业的第一个预期 运行 时间之前,因此 hangfire 运行 计划并创建作业本身.我实际上从未尝试过这样做,所以请测试一下(让我知道它是怎么回事)。

来自HangFire docs, you can use CRON expressions。开始时它们有点难上手,但一旦掌握了结构的窍门,您将能够做任何您想做的事情。请注意,这些是 精确 次,并且没有 "whenever you feel like it after this time." 当你想要它时告诉它 运行。

例如,如果您希望它在每天下午 2 点 运行:

RecurringJob.AddOrUpdate(() => Console.Write("Powerful!"), "0 14 * * *");
  • 0: 0 分钟
  • 14:下午 2 点(14:00 时)
  • *: 每月的每一天
  • *: 一年中的每个月
  • *: 一周中的每一天。

试试这个

  using (var server = new BackgroundJobServer())
  {
                BackgroundJob.Schedule(
                    () => RunJob(),
                    TimeSpan.FromSeconds(5)
                    );
  }



    public static void RunJob()
    {
       using (var server = new BackgroundJobServer())
       {
         RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World123"), "* * * * *");
                
      }
    }