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

问题描述:

我在WinForms应用程序上有一个按钮和一个Web浏览器控件。当我点击一个按钮时,它启动一个浏览器,但直到加载页面时,即使我使用单独的线程进行浏览器控制,我的应用程序仍会挂起。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"); 
} 
+1

不要在线程中执行'go'。 – 2012-03-10 22:54:46

+0

您能否描述您使用了哪种网页浏览器控件,可能包含链接以便人们快速了解它? – oleksii 2012-03-10 22:58:13

+0

包含在vs 2010工具箱中的网络浏览器 – motevalizadeh 2012-03-10 23:08:44

的.navigate方法后,做到这一点...

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

这应该排序在螺纹出来,.busy可能是你的WB控制版本.isbusy,看看我的其他网站浏览器相关的答案,如果你想实现一个适当的,更详细的方法暂停执行,直到网页浏览器真正完成加载网页。

让我知道它是如何解决你,如果我可以有任何进一步的帮助。

我有类似的问题,使用调度程序解决了该问题。由于您在代码背后尝试使用后台工作人员会给您带来错误。

尝试下面的按钮点击。

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

命名空间为上面的System.Threading

+0

在WinForms中,需要使用Dispatcher.CurrentDispatcher。然后,至少在快乐的一天中(至今没有找到一种激发网络问题的方法)。 – 2017-06-16 08:31:25