public FuelBackgroundService(int daysCount, TimeSpan interval, FuelApiClient fuelApiClient, FuelPriceEditService priceEditService, ILog logger = null)
        {
            if (daysCount < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(daysCount));
            }
            else if (fuelApiClient == null)
            {
                throw new ArgumentNullException(nameof(fuelApiClient));
            }
            else if (priceEditService == null)
            {
                throw new ArgumentNullException(nameof(priceEditService));
            }

            DaysCount        = daysCount;
            Interval         = interval;
            FuelApiClient    = fuelApiClient;
            PriceEditService = priceEditService;
            Logger           = logger;
            Timer            = new Timer
            {
                AutoReset = false,
                Interval  = interval.TotalMilliseconds,
            };

            Timer.Elapsed += (sender, e) => DoWork();
        }
 private void DoWork()
 {
     try
     {
         WriteLog("Getting prices...");
         var prices  = FuelApiClient.GetPrices(DaysCount);
         var message = String.Join(Environment.NewLine, prices);
         WriteLog(message);
         var updated = PriceEditService.Add(prices);
         WriteLog($"Prices were updated - {updated}");
     }
     catch (Exception ex)
     {
         Logger?.Error(ex);
     }
     finally
     {
         Timer.Start();
     }
 }
        static void Main(string[] args)
        {
            var logger    = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            var apiClient = new FuelApiClient(Settings.Default.ApiUrl);

            using (var context = new FuelDbContext())
            {
                var editService = new FuelPriceEditService(context);
                using (var service = new FuelBackgroundService(Settings.Default.DaysCount, Settings.Default.TaskExecutionDelay, apiClient, editService, logger))
                {
                    service.Start();
                    PressAnyKeyForContinue("Press any key for stop.");
                    service.Stop();

                    var prices  = context.Prices.ToList();
                    var message = String.Join(Environment.NewLine, prices);
                    Console.WriteLine($"{Environment.NewLine}Fuel prices:");
                    Console.WriteLine(message);
                    PressAnyKeyForContinue("Press any key for exit...");
                }
            }
        }