Работа с WebBrowser без Control

103
28 декабря 2020, 07:30

Почему-то не могу дождаться завершения загрузки веб-страницы, бесконечный цикл. В чем моя проблема? Использовал следующий код:

//Часть кода из главной функции
load = false;
WebBrowser wb = new WebBrowser();   
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentLoad);
wb.Navigate(@"https://instagram.com/");
while (!load) { Thread.Sleep(40); };

И код обработчика события загрузки страницы:

public void DocumentLoad(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    load = true;
}
Answer 1

Вы блокируете поток в котором выполняется Ваш код, в том числе и обработчик DocumentLoad соответственно, load=true не выполняется.

Для обработки завершения загрузки нужно подписаться на событие WebBrowser.DocumentCompleted и код, который зависит от загрузки страницы перенести непосредственно в обработчик события.

Полагаю, что в полном коде есть какие-то действия после цикла и он выглядит примерно так:

load = false;
WebBrowser wb = new WebBrowser();   
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentLoad);
wb.Navigate(@"https://instagram.com/");
while (!load) { Thread.Sleep(40); };
//какой-то код, который работает с загруженной страницей
...
public void DocumentLoad(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    load = true;
}

Нужно переделать его во что-то вроде:

WebBrowser wb = new WebBrowser();   
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentLoad);
wb.Navigate(@"https://instagram.com/");
//здесь больше ничего не делаем
...
public void DocumentLoad(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    //какой-то код, который работает с загруженной страницей
}
READ ALSO
unsafe структура с фиксированным массивом структур

unsafe структура с фиксированным массивом структур

Пробую перенести одну из структур с из DXGI, но столкнулся с проблемой

131
Как получить список всех элементов на странице из WebBrowser?

Как получить список всех элементов на странице из WebBrowser?

Как получить список всех элементов на странице из элемента управления WebBrowser? Необходимо получить именно всех элементов, а не отдельные из них

132
Ссылка на объект не указывает на экземпляр объекта при сбросе combobox [дубликат]

Ссылка на объект не указывает на экземпляр объекта при сбросе combobox [дубликат]

Есть код, который выводит строки в datagridview при выборе индекса из comboboxНо при сбросе через comboBox1

119
Переход к заданной позиции в файле

Переход к заданной позиции в файле

Мне нужно считывать символы с указанной позиции(lastIndexChangedSymbol), что бы вернуться в начало предложения, тк

143