Как вызвать асинхронный метод в hangfire с помощью C#
Привет,
У меня есть требование выполнить некоторую трудоемкую операцию(создать html-шаблон на основе запроса) в Web Api и преобразовать его в pdf-файл и отправить в виде вложения по почте.Это должно происходить в фоновом режиме.
Проблема в том, что у меня есть обработчик запросов, который является асинхронным методом, и этот метод используется для создания нескольких шаблонов и занимает очень много времени, и мы не хотим, чтобы пользователь ждал, пока мы завершим эту операцию. Поэтому мы решили использовать HangFire.
Но проблема здесь в том, что задание не выполняется, и на большинстве форумов они упоминали, что с помощью HangFire можно выполнять только синхронные вызовы.
Поэтому я хотел бы знать, можно ли вызвать асинхронный метод синхронно, так что я буду вызывать этот синхронный метод внутри backgroundJob.Enqueue().Если да, то не могли бы вы помочь мне с каким-нибудь примером.
Примечание: Я выполняю дальнейшие операции, основанные на результате этого асинхронного метода
Что я уже пробовал:
Я попробовал вызвать метод асинхронный метод синхронно используя
Task.Run(()=>AsyncMethod()).Resultи тоже попробовал
Task.Run(async()=>await AsyncMethod()).Result, Task.Run(()=>AsyncMethod()).ConfigureAwait(false).GetAwaiter().GetResult()любить,
public void HangFireMethodCall(){ BackgroundJob.Enqueue(()=>SyncMethod()); } public SomeReturnType SyncMethod(){ Task.Run(async()=>await AsyncMethod(Request)).Result; return successMessage; } public async Task<returntype> AsyncMethod(RequestType request){ var response= await ExecuteAsync(request); //Based on response do some operation }Но ничто не выполняло асинхронный метод.
несколько реферальных ссылок, которые я пробовал, это,
Асинхронные задания задач - вопрос - Обсуждение Hangfire[^]
async await - как вызвать асинхронный метод из синхронного метода в C#? - переполнение стека[^]