Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 6049|Respuesta: 4

[Fuente] ASP.NET Core (diecinueve) utiliza BackgroundService para ejecutar tareas en segundo plano

[Copiar enlace]
Publicado el 20-5-2023 22:51:51 | | | |
Requisitos: Se define una cola de registro estática en el proyecto, y cada solicitud puede poner mensajes en la cola, y necesitamos que el sitio web abra una tarea en segundo plano para procesar los mensajes en esta cola.

Revisión:

Un servicio basado en .NET Core en Linux
https://www.itsvse.com/thread-9447-1-1.html
Interfaz IHostedService

La interfaz IHostedService define dos métodos para objetos alojados:

StartAsync(CancellationToken): La lógica usada para iniciar tareas en segundo plano.
StopAsync(CancellationToken): Se activa cuando el host realiza un apagado normal, conteniendo la lógica para terminar tareas en segundo plano.

Clase base BackgroundService

BackgroundService es la clase base utilizada para implementar el IHostedService de larga duración, cuya dirección del código fuente:El inicio de sesión del hipervínculo es visible.



Llama a ExecuteAsync(CancellationToken) para ejecutar el servicio en segundo plano. La implementación devuelve una Tarea que representa toda la vida útil del servicio en segundo plano. No se inician otros servicios hasta que ExecuteAsync se vuelve asincrónico, como al llamar await. Evita realizar tareas largas de inicialización de bloqueo en ExecuteAsync. StopAsync (CancellationToken) esperando a que ExecuteAsync se complete.

Implementamos una tarea en segundo plano para imprimir el registro en un bucle, el código es el siguiente:

Regístrate en el servicio de servicio con el siguiente código:

El modo de registro es un singleton, como se muestra en la figura siguiente:



Comienza el proyecto con el resultado de la siguiente manera:



Utiliza un servicio con alcance en una tarea en segundo plano

Para usar un servicio con alcance en el Servicio de Antecedentes, crea un ámbito. Por defecto, no se crean ámbitos para servicios gestionados. Si usas un constructor directamente para inyectar un objeto con alcance, el error es el siguiente:

Excepción no gestionada. System.AggregateException: Algunos servicios no pueden ser construidos (Error al validar el descriptor de servicio 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Vida útil: Singleton ImplementaciónTipo: WebApplication2.Worker.TestServiceHostedService': No se puede consumir el servicio con alcance 'WebApplication2.Worker.User' desde singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Necesitamos modificar el código de la siguiente manera:

Referencia:El inicio de sesión del hipervínculo es visible.

(Fin)





Anterior:OData – OData vs GraphQL
Próximo:Tutorial de base de datos embebida LiteDB para .NET
 Propietario| Publicado el 20-5-2023 22:52:45 |


revisión

ASP.NET Núcleo (18) Personalizar una caché de salida sencilla de OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integra el análisis de rendimiento de aplicaciones MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Núcleo (16) Dependiente de la inyección de servicios de registro dinámico
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) utiliza HttpClient para enviar solicitudes HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (catorce) está basado en el captcha de imagen SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) para determinar si es una solicitud Ajax o no
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (doce) JS front-end, empaquetado y compresión CSS
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET ruta Core (XI) añade middleware para mostrar todos los servicios DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explicación detallada de las prioridades de configuración en Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explicación detallada del middleware Middleware de Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Explicación detallada del Middleware Core
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET pozo de los parámetros predeterminados de la interfaz Swagger en Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Núcleo (7) Análisis en profundidad del código fuente del framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obtiene manualmente el método de inyectar objetos
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinco) se basa en transacciones distribuidas CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validación unificada de modelos de modelo del filtro Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crear dinámicamente instancias usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Núcleo (2) Reiniciar la aplicación por código
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utiliza caché Redis
https://www.itsvse.com/thread-9393-1-1.html
 Propietario| Publicado el 29-05-2023 a las 20:29:45 |
Puedes reemplazar IServiceProvider por IServiceScopeFactory, y no hay diferencia entre ambos al crear CreateScope.
 Propietario| Publicado el 2023-8-2 19:13:00 |
Se utiliza un nuevo temporizador en .NET 6, PeriodicTimer,
https://www.itsvse.com/thread-10637-1-1.html
 Propietario| Publicado el 13-8-2023 20:13:37 |
StartAsync debería limitarse aMisiones a corto plazo, porque el servicio de alojamiento esEjecuta en ordenblancoNo se inician otros servicios hasta que StartAsync está completamente ejecutadoLas tareas a largo plazo deben colocarse en ExecuteAsync

Referencia:El inicio de sesión del hipervínculo es visible.

Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com