2017-04-18 186 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小時)
  • *:每月的一天
  • *:全年每月
  • *:一週中的每一天。