Показать сообщение отдельно
Старый 27.12.2015, 18:12   #32
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Как загрузить все изображения с веб-сайта?

Сообщение от Program23 Посмотреть сообщение
Добился я нужного функционала от своего парсера на C#. Спасибо иностранным коллегам на Stackoverflow.
покажи...
Сейчас у меня такая проблема:
>При загрузке изображения, иногда может выдать ошибку, как реализовать повторную загрузку?
Я слышал что-то о Retry паттернах + Polly библиотека.
Что посоветуешь, если, конечно, разбираешься в этом?
var img = await DownloadImage("http://google.com/img.png");

while (img == null) {
    await Task.Delay(1000); // ждем секунду, это вместо Thread.Sleep

    img = DownloadImage("http://google.com/img.png");
}

File.WriteAllBytes("C:\\myimage.png", img);

public async Task<byte[]> DownloadImage(string url) {
    byte[] img;
    try {
        using (var webClient = new WebClient()) {
             img = await webClient.DownloadDataTaskAsync(url);
             return img;
        }
    }
    catch {
        return null;
    }
    

}
в цикл можно еще условие на кол-во попыток добавить и в WebClient вместо обычного catch - вставить конкретный тип исключения (если проблемы с сетью - то нужно картинку заново попробовать скачать, если сервер 404 вернул, то нет смысла дальше долбить его)
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Program23 (27.12.2015)