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.   

    不要在线程中使用WebBrowser了。
      

  2.   

    我也遇到了多次调用卡住的问题。好的情况下30次左右,不好的情况下10次就会卡住。
    我用的解决方法是用一个线程计时,如果超过了一定时间(1分钟?)仍然没有返回,就重新navigate(url)一次。
    这个方法比较烂,但你可以试一下。
      

  3.   

    用委托,然后begininvoke或者invoke试一下