Web浏览器控件挂起我的应用程序

时间:2012-03-10 22:43:15

标签: c# webbrowser-control

我的WinForms应用程序上有一个按钮和一个Web浏览器控件。当我点击一个按钮时,它会激活浏览器,但是在页面加载之前我的应用程序会挂起,即使我使用单独的线程进行浏览器控制。

如何处理它,以便在页面加载时我的应用程序不会挂起?

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 个答案:

答案 0 :(得分:1)

我有类似的问题,使用调度程序解决了这个问题。使用后台工作程序会因为您尝试使用后面的代码而引发错误。

点击按钮,尝试以下内容。

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

以上的命名空间是System.Threading

答案 1 :(得分:0)

在.navigate方法之后,执行此操作...

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

这应该排除线程,.busy可能是你的wb控件版本的.isbusy,如果你想实现一个适当的,更详细的暂停执行方法直到web浏览器是真的,请查看我的其他web浏览器相关答案完成加载网页。

让我知道它是如何为你工作的,如果我能得到任何进一步的帮助。