2016-12-14 20 views
0

我使用Hangfire来触发数据库检索操作作为后台作业。Hangfire:如何有条件地排队工作

此操作只能发生一次,并且可以通过多种方式触发。 (例如,在用户拖拽工具时,在用户界面中,我需要在后台触发该工作,但如果拖放了其他工具,我不想触发后台作业,因为它已从预取数据库)。

这是我的代码看起来像现在:

var jobId = BackgroundJob.Enqueue<BackgroundModelHelper>((x) => x.PreFetchBillingByTimePeriods(organizationId)); 

我要的是某种形式的检查之前,我执行上面的语句,找到,如果后台作业已经被发射;如果是的话,那么不要再开火,如果没有,那么就排队。

例如:

bool prefetchIsFired = false; 

// find out if a background job has already been fired. If yes, set prefetchIsFired to true. 

if (!prefetchIsFired) 
    var jobId = BackgroundJob.Enqueue<BackgroundModelHelper>((x) => x.PreFetchBillingByTimePeriods(organizationId, null)); 
+0

如果命名工作会自动覆盖旧的同名 –

回答