Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

310
Views
¿Cómo invocar métodos asíncronos en Hangfire?

Tengo la aplicación API central de asp.net y esta es la primera vez que usaré HangFire.

En la aplicación .Net Core, todos mis métodos son asíncronos. Según SO Post , no es una buena idea usar wait() mientras se llama al método asíncrono en hangfire.
También según el problema de soporte de hangfire en v1.6.0, se agregó soporte asíncrono. Estoy usando la versión 1.6.12 pero aún no veo soporte asíncrono.

¿Cómo llamo al método asíncrono desde Enqueue ? Actualmente estoy usando wait()

 public class MyController : Controller { private readonly Downloader _downlaoder; private readonly IBackgroundJobClient _backgroungJobClient; public MyController(Downloader downloader, IBackgroundJobClient backgroungJobClient) { _downlaoder = downloader; _backgroungJobClient = backgroungJobClient; } [HttpPost] public void Post([FromBody]IEnumerable<string> files) { _backgroungJobClient.Enqueue(() => _downloader.DownloadAsync(files).Wait()); } }
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Basado en uno de los ejemplos en el repositorio en github

Simplemente elimine la llamada de bloqueo de Wait

 _backgroungJobClient.Enqueue(() => _downloader.DownloadAsync(files));

El método ahora sabe cómo manejar Func que devuelve Task

Hangfire 1.6.0 - Blog

La lógica de puesta en cola es la misma para los métodos de sincronización y asíncrono. En las primeras versiones beta había una advertencia CS4014, pero ahora puede eliminar todas las declaraciones de desactivación de advertencia #pragma . Se implementó mediante el uso de sobrecargas de parámetros Expression<Func<Task>> .

 BackgroundJob.Enqueue(() => HighlightAsync(snippet.Id));

Nota:

Eso no es una verdadera asincronía.

Considere esta característica como un azúcar sintáctico. El procesamiento en segundo plano no se ha vuelto asíncrono. Internamente, se implementó utilizando el método Task.Wait, por lo que los trabajadores no realizan ningún procesamiento mientras esperan la finalización de una tarea. La asincronía real puede venir solo en Hangfire 2.0 y requiere muchos cambios importantes en los tipos existentes.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!