我使用Hangfire来触发数据库检索操作作为后台作业。
此操作仅发生一次,可以多种方式触发。 (例如,在UI中,当用户拖放工具时,我需要在后台触发该工作。但是如果拖放另一个工具,我不想解雇后台工作&# 39;已经从数据库中预取了)。
这就是我现在的代码:
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 :(得分:0)
您可以在工作方法上使用过滤器(DisableMultipleQueuedItemsFilter),如下所示:https://discuss.hangfire.io/t/how-do-i-prevent-creation-of-duplicate-jobs/1222/4