#.net #image-processing #browser
#.net #обработка изображений #браузер
Вопрос:
Я загружаю веб-страницу с помощью WebBrowser, делаю снимок экрана и сохраняю его на диск. Иногда фоновое изображение, на которое ссылается веб-страница, не загружается. Моя идея заключается в том, что у него не было времени для загрузки. Однако я проверяю, готова ли веб-страница со следующим…
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
Есть идеи, почему фоновое изображение может отсутствовать только иногда?
Приветствую, Ян.
Ответ №1:
Этого недостаточно. Также отличный способ для пользователя завершить работу вашей программы: закройте окно во время его загрузки.
Вы должны использовать событие DocumentCompleted. Убедитесь, что e.URL совпадает с URL браузера, в случае, если веб-страница состоит из нескольких фреймов. Страница все еще может быть дополнительно изменена javascript, вы ничего не можете с этим поделать, кроме использования таймера.
Комментарии:
1. Этот код выполняется в результате веб-запроса, поэтому возможно ли зависание цикла? Также я не уверен, как использовать DocumentCompleted и блокировать, пока не будет вызвано событие. Но в любом случае, я не понимаю, почему WebBrowserReadyState . Веб-браузер установил бы значение Complete, когда на самом деле это было не так.
2. Вы этого не видите? Странно, ваш вопрос, безусловно, звучал так, как вы и сделали. Это нормально.
3. Кроме того, почему исходный код приведет к аварийному завершению работы программы, если пользователь закроет окно?