public void ThreadWebBrowser(string url)
{
System.Threading.Thread tread = new Thread(new System.Threading.ParameterizedThreadStart(BeginCatch));
tread.SetApartmentState(ApartmentState.STA);
tread.Start(url);
tread.Join();
}
public void BeginCatch(object obj)
{
string url = obj.ToString();
WebBrowser browser = new WebBrowser();
browser.ScriptErrorsSuppressed = true;
browser.Navigate(url);//多次调用这里会卡住,程序会未响应,导致时间超过了预期时间,有没有什么办法改进 while (browser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();//有没有方法 让这里时间缩短一些
}
GetHtml(browser);//调用其他函数,获取Html
browser.Dispose();
}
我用的解决方法是用一个线程计时,如果超过了一定时间(1分钟?)仍然没有返回,就重新navigate(url)一次。
这个方法比较烂,但你可以试一下。