Qué es el servicio Trabajador (servicio de función auxiliar)?
.NET Core 3.0 añade una nueva plantilla de proyecto de servicio del trabajador, y se puede escribir de larga duración servicio en segundo plano, y puede ser fácilmente desplegado en ventanas de servicio o demonios Linux.
Si va a instalar vs2019 es la versión china, Servicio trabajador nombre del proyecto se convierte en un servicio de función secundaria.
métodos de interfaz IHostedService:
StartAsync (CancellationToken) - contiene la lógica para iniciar tareas en segundo plano.
StopAsync (CancellationToken) - desencadena cuando el host normalmente cerrado.
sobre BackgroundService
BackgroundService es una implementación de la clase base de la IHostedService de larga duración.
tutorial
- Empezar a crear un proyecto de servicio del trabajador
- Program.cs
- Worker.cs
- La inyección de dependencia (DI)
- StartAsync BackgroundService tipo regrabable, ExecuteAsync, método StopAsync
- No deje StartAsync, ExecuteAsync, StopAsync subproceso de trabajo de clase bloqueo método reemplazado
- Múltiples carreras en la clase de servicio del trabajador
- Desplegado como un servicio de Windows
- carreras de despliegue como un demonio de Linux
Caso - cronometrado tareas en segundo plano
usando Microsoft.Extensions.Hosting; usando Microsoft.Extensions.Logging; usando System; usando System.Threading; usando System.Threading.Tasks; espacio de nombres Demo_WorkerService_0320 { público de clase TimedHostedService: IHostedService, IDisposable { privada int executionCount = 0 ; privada de sólo lectura ILogger <TimedHostedService> _logger; privada _timer temporizador; pública TimedHostedService (ILogger <TimedHostedService> registrador) { _logger = registrador; } Pública de tareas StartAsync (CancellationToken stoppingToken) { _logger.LogInformation ( " Timed Alojado servicio en ejecución. " ); _timer = nuevo Timer (DoWork, DateTime.Now.Ticks, TimeSpan.Zero, TimeSpan.FromSeconds ( 2 )); volver Task.CompletedTask; } Privada vacío DoWork ( objeto estado) { var count = Interlocked.Increment ( ref executionCount); _logger.LogInformation ($ " *** Índice = {count}, tarea comienzo ... *** " ); Thread.Sleep ( 5 * 1000 ); _logger.LogInformation ($ " *** Índice = {count}, tarea completa *** " ); } Pública de tareas StopAsync (CancellationToken stoppingToken) { _logger.LogInformation ( " Timed Alojado servicio está parando. " ); _timer ? .Cambiar (Timeout.Infinite, 0 ); volver Task.CompletedTask; } pública vacío Dispose () { _timer ? .Disponer(); } } }
Avance
material de referencia
las tareas de fondo que utilicen la implementación de servicios gestionados en ASP.NET Core en
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio
El uso de .NET Core Trabajador de servicios, para crear un servicio de Windows o Linux demonios
https://www.cnblogs.com/OpenCoder/p/12191164.html