我的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");
}
答案 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浏览器相关答案完成加载网页。
让我知道它是如何为你工作的,如果我能得到任何进一步的帮助。