void DoWork() { try { Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyyHH:mm:ss")} Сервис запущен"); DownloadService service = new DownloadService(); Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Идёт скачивание файла GeoLite2-City-CSV.zip "); if (string.IsNullOrEmpty(ConfigurationService.DownloadFileHref)) { throw new Exception("Настройте ключ DownloadFileHref в конфиг файле App.config"); } string filePath = service.DownloadFile(ConfigurationService.DownloadFileHref); // обновляем только в среду, так как данные на сайте обновляются только во вторник или указана AlwaysUpdate=true в конфиге if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday || ConfigurationService.AlwaysUpdate) { CSVService csvServ = new CSVService(); GeoRepository repository = new GeoRepository(); string filePathLocations = string.Format($"{filePath}\\{fileNameLocations}"); if (!File.Exists(filePathLocations)) { throw new Exception($"Загруженный файл {fileNameLocations} не был найден"); } Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Идёт считывание файла GeoLite2-City-Locations-ru.csv, подождите... "); var itemsLocations = csvServ.GetDataTabletFromCSVFile(filePathLocations); // загружаем файл Locations Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Запись в базу файла GeoLite2-City-Locations-ru.csv, подождите..."); repository.DeleteData("Stp_ClearCityLocationRu"); repository.InsertDataUsingSQLBulkCopy(itemsLocations, "CityLocationsRu"); string filePathCity = string.Format($"{filePath}\\{fileNameCity}"); if (!File.Exists(filePathCity)) { throw new Exception($"Загруженный файл {fileNameCity} не был найден"); } Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Идёт считывание файла GeoLite2-City-Blocks-IPv4.csv, подождите... "); var itemsCity = csvServ.GetDataTabletFromCSVFile(filePathCity); // загружаем файл City Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Запись в базу файла GeoLite2-City-Blocks-IPv4.csv, подождите..."); repository.DeleteData("Stp_ClearCityBlocksIPv4"); repository.InsertDataUsingSQLBulkCopy(itemsCity, "CityBlocksIPv4"); Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Данные в базе были обновлены"); } else { Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Данные не требуют обновления"); } Console.WriteLine($"{ DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")} Работа сервиса завершена успешно "); Thread.Sleep(new TimeSpan(ConfigurationService.AfterDaysToRunApp, 0, 0, 0)); // настраиваем через какое время запускаться, ключ вынесен в конфиг DoWork(); } catch (Exception ex) { Console.WriteLine($"{ex?.Message} {ex?.InnerException}"); Console.ReadLine(); } }