Контроль веб-браузера зависает мое приложение - PullRequest
0 голосов
/ 11 марта 2012

У меня есть кнопка и веб-браузер в моем приложении WinForms.Когда я нажимаю на кнопку, она запускает браузер, но до загрузки страницы мое приложение зависает, хотя я использую отдельный поток для управления браузером.

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

private void button1_Click(object sender, EventArgs e)
{
    Thread mythread = new Thread(new ThreadStart(go));    
    mythread.IsBackground = true;
    mythread.Name = "mythread";
    mythread.Start();
}

void go() 
{ 
    webBrowser1.Navigate("google.com"); 
}

Ответы [ 2 ]

1 голос
/ 01 ноября 2013

У меня была похожая проблема, проблема была решена с помощью диспетчера. Использование Background worker выдаст вам ошибку, так как вы пытаетесь выполнить код позади.

Попробуйте следующее при нажатии кнопки.

Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { go(); })); 

Пространство имен для вышеперечисленного - System.Threading

0 голосов
/ 12 марта 2012

После метода .navigate, сделайте это ...

Do
Sleep 100
Doevents
Loop until webbrowser1.busy = true and webbrowser1.readystate = 4

Это должно отсортировать поток, .busy может быть .isbusy в вашей версии wb control, посмотрите мой другой веб-браузер, связанныйотвечает, если вы хотите реализовать правильный, более подробный метод приостановки выполнения, пока веб-браузер действительно не завершит загрузку веб-страницы.

Дайте мне знать, как это работает для вас, и могу ли я чем-нибудь помочь

...