2016-12-14 6 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

если имя задания будет автоматически переопределяет предыдущий с тем же именем –

ответ