Ответ 1
На основе одного из примеров на репозитории на github
Просто удалите Wait
блокировки вызова
_backgroungJobClient.Enqueue(() => _downloader.DownloadAsync(files));
Теперь метод знает, как обрабатывать Func, который возвращает Task
Логика постановки в очередь одинакова для методов синхронизации и асинхронности. В ранних бета-версиях было предупреждение CS4014, но теперь вы можете удалить все операторы отключения предупреждения
#pragma
. Это было реализовано с использованием перегрузок параметровExpression<Func<Task>>
.BackgroundJob.Enqueue(() => HighlightAsync(snippet.Id));
Замечания:
Это не настоящая асинхронность
Пожалуйста, рассмотрите эту функцию как синтаксический сахар. Фоновая обработка не стала асинхронной. Внутренне это было реализовано с использованием метода Task.Wait, поэтому работники не выполняют никакой обработки, ожидая завершения задачи. Настоящая асинхронность может появиться только в Hangfire 2.0, и она требует много серьезных изменений в существующих типах.