namespace EnvelopeGenerator.ServiceHost; public class Worker : BackgroundService { private readonly ILogger _logger; private readonly int _delayMilliseconds; private readonly IFinalizeDocumentJobRunner _jobRunner; public Worker(ILogger logger, IConfiguration configuration, IFinalizeDocumentJobRunner jobRunner) { _logger = logger; _delayMilliseconds = Math.Max(1, configuration.GetValue("Worker:DelayMilliseconds", 1000)); _jobRunner = jobRunner; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } await _jobRunner.RunAsync(stoppingToken); await Task.Delay(_delayMilliseconds, stoppingToken); } } }