using EgwCoreLib.Lux.Data.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using System; using System.Threading; using System.Threading.Tasks; namespace EgwCoreLib.Lux.Data.Services { public class CleanupService : BackgroundService { #region Public Constructors /// /// Init classe con il servizio di gestione RUID /// /// public CleanupService(IConfiguration config, CalcRuidService crService) { _config = config; try { reqPeriodMinute = _config.GetValue("ServerConf:CleanupPeriodMinutes"); } catch { reqPeriodMinute = 60; } _calcRuidService = crService; } #endregion Public Constructors #region Protected Methods protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { var combos = await _calcRuidService.GetCombinationsAsync(); foreach (var (env, tipo) in combos) await _calcRuidService.CleanupOldRequestsAsync(env, tipo); // attesa tra le esecuzioni await Task.Delay(TimeSpan.FromMinutes(reqPeriodMinute), stoppingToken); } } #endregion Protected Methods #region Private Fields private readonly CalcRuidService _calcRuidService; private IConfiguration _config; private int reqPeriodMinute = 60; #endregion Private Fields } }