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