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 _Logger; private readonly AppSettings _AppSettings; public Worker(IServiceProvider serviceProvider, ILogger logger, AppSettings appSettings, List 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); }