using Dlhis.Middle.Services; namespace Dlhis.Middle.BackgroundServices; public class HealthCheckBackgroundService : BackgroundService { private readonly IHealthCheckService _healthCheckService; private readonly IServiceProvider _serviceProvider; private bool _init; public HealthCheckBackgroundService(IHealthCheckService healthCheckService, IServiceProvider serviceProvider) { _healthCheckService = healthCheckService; _serviceProvider = serviceProvider; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { if (await _healthCheckService.DoHealthCheckAsync()) { if (!_init) { using var scope = _serviceProvider.CreateScope(); var factories = scope.ServiceProvider.GetService().GetFactories(); var ds = scope.ServiceProvider.GetService(); await ds.InitAsync(factories); } } _init = true; } } }