WebClient.DownloadFileAsync() неправильно загружает файлы в медленной сети
Мое приложение используется для загрузки файлов. После загрузки файлов размер этих файлов сравнивается с элементами в XML-файле для проверки. В файле XML есть элемент для каждого файла с атрибутом "размер". Это размер загруженного файла. Файлы проверяются нормально при обычном соединении Ethernet. Когда используется медленное беспроводное соединение, файлы постоянно не проходят проверку, что означает, что загружаемые файлы не соответствуют размеру, который они должны быть. Почему метод WebClient DownloadFileAsync() не может успешно загрузить файл в медленной или нестабильной сети? Есть ли способ обойти это, кроме повторных попыток?
foreach (var file in fileList.OrderBy(x => x.Name))
{
var client = new WebClient();
client.DownloadFileCompleted += (o, a) => Task.Factory.StartNew(() => OnDownloadFileCompleted());
client.DownloadFileAsync(new Uri(AppStrings.FileServer + file.Name), AppStrings.FilePath + file.Name);
webClientList.Add(client); //used to dispose later, after all files complete.
}
1 ответ
Вы пытаетесь загрузить слишком много файлов одновременно. Попробуйте скачать в пакетном режиме. В объекте AsyncDownloadCompleted Event также есть свойство error, которое сообщит вам, что является исключением.