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 StatsCollectService : BackgroundService { #region Public Constructors /// /// Init classe con il servizio di gestione RUID /// /// public StatsCollectService(IConfiguration config, CalcRuidService crService) { _config = config; try { clearProcessed = _config.GetValue("ServerConf:CleanupProcessed"); refreshPeriod = _config.GetValue("ServerConf:RefreshPeriodMinutes"); } catch { refreshPeriod = 60; } _calcRuidService = crService; } #endregion Public Constructors private bool clearProcessed = false; #region Protected Methods protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { await _calcRuidService.ExportStatsToDbAsync(clearProcessed); // attesa tra le esecuzioni await Task.Delay(TimeSpan.FromMinutes(refreshPeriod), stoppingToken); } } #endregion Protected Methods #region Private Fields private readonly CalcRuidService _calcRuidService; private IConfiguration _config; private int refreshPeriod = 10; #endregion Private Fields } }