2017-04-18 143 views
1

我使用的是Hangfire版本“1.6.8”。我想在某些DateTime之后用Cron.Daily创建重复作业。是否有可能通过延迟时间创建重复工作?延迟时间的重复作业

在此先感谢

+1

您可以使用Cron.Daily(time.Hours,time.Minutes); - 用特定的时间做日常工作 – Sergey

回答

1

我想不出这样做的任何特别干净的方式。

你可以探索使用计划作业的迟发型创建RecurringJob的途径:

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

这可能是设置为重复执行的作业的第一个预期的运行时间之前不久运行计划工作,从而hangfire运行时间表并创建工作本身。我从来没有尝试过这样做,所以请做测试(让我知道它是如何发生的)。

+0

我看到你接受了我的答案,这是否意味着这个工作?它是如何去的?对于任何追随者,你有更具体的实施细节吗? – MarkFl

+0

我试过了,我得到这个异常:System.NotSupportedException:'作业方法参数中不支持匿名函数,委托和lambda表达式:它们很难序列化它们以及它们的一般范围。 –

1

HangFire docs开始,您可以使用CRON expressions。最初他们有点难以接受,但是一旦你掌握了结构,你就可以做你想要的一切。请注意,这些是精确次,并且没有“在这个时间之后你感觉像是什么时候”。当你想让它运行时告诉它。

例如,如果你想在每天14:00运行:

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