Я использую приведенный ниже код, чтобы загрузить изображение с удаленного URL-адреса и сохранить его в папке локального хранилища.
try
{
var rootFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync( "MyAppName\\CoverPics", CreationCollisionOption.OpenIfExists);
var coverpic_file = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.FailIfExists);
try
{
var httpWebRequest = HttpWebRequest.CreateHttp(coverUrl);
HttpWebResponse response = (HttpWebResponse)await httpWebRequest.GetResponseAsync();
Stream resStream = response.GetResponseStream();
using (var stream = await coverpic_file.OpenAsync(FileAccessMode.ReadWrite))
{
await resStream.CopyToAsync(stream.AsStreamForWrite());
}
response.Dispose();
}
catch //any exceptions happend while saving the picture
{
saved = false;
}
}
catch
{
//https://msdn.microsoft.com/en-us/library/windows/apps/br227250.aspx
//Raise an exception if file already present
saved = true;
}
Этот код работает у меня в большинстве случаев, но я заметил, что для некоторых изображений изображение не загружается полностью.
Я вызываю эту функцию в асинхронном блоке для получения более 100 изображений за один проход внутри цикла foreach, и в конце концов некоторые из них не загружаются.
[Либо я вижу, что создается недопустимый файл
или только часть изображения при загрузке, а в остальной области я вижу блок черного цвета [похоже, изображение повреждено].
Размер всех изображений только менее 1 МБ
Может ли кто-нибудь помочь мне оптимизировать этот код или указать на ошибку в коде, чтобы я мог полностью загрузить все изображения