private void DownloadFtpFiles44(List <FileCashes> fileCashes) { DateTime StartDate = DateTime.Now; _logger.LogInformation($"Начало загрузки {fileCashes.Count} архивов FZ44 {StartDate}..."); _logger.LogDebug($"Начало загрузки {fileCashes.Count} архивов FZ44 {StartDate}..."); var parallelOptions = new ParallelOptions() { //MaxDegreeOfParallelism = 1, MaxDegreeOfParallelism = _fzSettings44.Parallels, }; Parallel.ForEach(fileCashes, parallelOptions, item => { FtpClient client = new FtpClient(_commonSettings.FtpCredential.FZ44.Url) { Credentials = new NetworkCredential(_commonSettings.FtpCredential.FZ44.Login, _commonSettings.FtpCredential.FZ44.Password), RetryAttempts = 5 }; try { client.Connect(); _logger.LogInformation($"Загрузка архива FZ44 {item.Full_path}..."); client.DownloadFile(_fzSettings44.WorkPath + item.Full_path, item.Full_path); item.Modifid_date = DateTime.Now; item.Status = Status.Uploaded; _dataServices.UpdateCasheFiles(item); } catch (Exception ex) { _dataServices.DeleteCasheFiles(item); _logger.LogError(ex, $"Ошибка скачивания архива FZ44 файл перемещён или недоступен: {item.Full_path}"); _logger.LogError(ex, ex.Message); } finally { client.Disconnect(); } }); DateTime EndDate = DateTime.Now; _logger.LogInformation($"Загружено {fileCashes.Count} архивов FZ44 {EndDate}... Время загрузки {(EndDate - StartDate).TotalMinutes} минут"); _logger.LogDebug($"Загружено {fileCashes.Count} архивов FZ44 {EndDate}... Время загрузки {(EndDate - StartDate).TotalMinutes} минут"); }