parsing-packets/Worker.cs

44 lines
1.9 KiB
C#

using Microsoft.Extensions.Hosting.WindowsServices;
using Parsing_Packets.Models;
using System.Data;
namespace Parsing_Packets;
public partial class Worker : BackgroundService
{
private readonly bool _IsWindowsService;
private readonly ILogger<Worker> _Logger;
private readonly AppSettings _AppSettings;
public Worker(IServiceProvider serviceProvider, ILogger<Worker> logger, AppSettings appSettings, List<string> collection)
{
_Logger = logger;
_AppSettings = appSettings;
logger.LogInformation("{buildNumber}-{gitCommitSeven}", _AppSettings.BuildNumber, _AppSettings.GitCommitSeven);
try
{ logger.LogInformation("<{folder}>", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); }
catch (Exception) { }
_IsWindowsService = collection.Contains(nameof(WindowsServiceLifetime));
}
private async Task Body(CancellationToken stoppingToken)
{
if (!_IsWindowsService)
throw new EvaluateException("Set break point and skip!");
while (_IsWindowsService && !stoppingToken.IsCancellationRequested)
{
_Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
_ = _AppSettings.Helper switch
{
nameof(Helpers.HelperPhysicalAddress) => Helpers.HelperPhysicalAddress.ParsePackets(_AppSettings, _Logger, stoppingToken),
_ => throw new NotSupportedException()
};
_Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
await Task.Delay(_AppSettings.MillisecondsDelay, stoppingToken);
}
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken) =>
await Body(stoppingToken);
}