namespace BankOperationsUpdate.WorkerService; public class Worker : BackgroundService { private readonly ILogger _logger; private TimeSpan refreshInterval; private readonly UpdateOperations _updateOperations; public Worker(ILogger logger, UpdateOperations updateOperations, IConfiguration config) { _logger = logger; _updateOperations = updateOperations; refreshInterval = Int32.TryParse(config.GetSection("RefreshInterval").Value, out int minutes) ? TimeSpan.FromMinutes(5) : TimeSpan.FromMinutes(minutes); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { try { _updateOperations.Execute(); } catch (Exception ex) { _logger.LogError(ex.Message); } _logger.LogInformation("end of period"); await Task.Delay(refreshInterval, stoppingToken); } } }