BackgroundService — long-running tasks hosted in ASP.NET Core.
Implementation:
1public class OrderProcessingService : BackgroundService2{3 private readonly IServiceScopeFactory _scopeFactory;4 private readonly ILogger<OrderProcessingService> _logger;56 public OrderProcessingService(7 IServiceScopeFactory scopeFactory,8 ILogger<OrderProcessingService> logger)9 {10 _scopeFactory = scopeFactory;11 _logger = logger;12 }1314 protected override async Task ExecuteAsync(15 CancellationToken stoppingToken)16 {17 while (!stoppingToken.IsCancellationRequested)18 {19 using var scope = _scopeFactory.CreateScope();20 var orderService = scope.ServiceProvider21 .GetRequiredService<IOrderService>();2223 await orderService.ProcessPendingOrdersAsync();24 await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);25 }26 }27}
Registration:
1builder.Services.AddHostedService<OrderProcessingService>();
IHostedService (simpler):
1public class MyService : IHostedService2{3 public Task StartAsync(CancellationToken ct) => Task.CompletedTask;4 public Task StopAsync(CancellationToken ct) => Task.CompletedTask;5}
Use cases: