35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
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<ISettingService>().GetFactories();
|
|
var ds = scope.ServiceProvider.GetService<IDataDownloadService>();
|
|
await ds.InitAsync(factories);
|
|
}
|
|
}
|
|
|
|
_init = true;
|
|
}
|
|
}
|
|
} |