Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

312
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda