2015-04-22 26 views
0

我有一些運行良好的Hangfire循環作業。如何以編程方式立即執行ReccurringJob?

但是,我需要添加設施以允許用戶搶佔計劃並立即運行任務。

這是我的啓動:

RecurringJob.AddOrUpdate<SendFilesJob>("SendFilesJob", j => j.Execute(), send_schedule); 

我告訴用戶當作業運行最後,當它的下次運行,就像這樣:

using (var connection = JobStorage.Current.GetConnection()) 
{ 
    foreach (var recurringJob in connection.GetRecurringJobs()) 
    { 
     //report LastExecution, NextExecution, LastJobState 
    } 
} 

這也說明,當作業當前通過LastJobState處理,這很好。

然而,當用戶搶佔立即運行任務,我把它稱爲像這樣:

BackgroundJob.Enqueue<SendFilesJob>(j => j.Execute()); 

這工作,但它並沒有鉤到經常性工作項的報告;因此用戶在LastJobStateLastExecution值中看不到變化。

有沒有辦法訪問RecurringJob本身並啓動它,以便它更新這些值?

回答

2

您可以嘗試使用RecurringJob.Trigger("job-id");