60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
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
|
|
|
|
/// <summary>
|
|
/// Init classe con il servizio di gestione RUID
|
|
/// </summary>
|
|
/// <param name="crService"></param>
|
|
public StatsCollectService(IConfiguration config, CalcRuidService crService)
|
|
{
|
|
_config = config;
|
|
try
|
|
{
|
|
clearProcessed = _config.GetValue<bool>("ServerConf:CleanupProcessed");
|
|
refreshPeriod = _config.GetValue<int>("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
|
|
}
|
|
} |