none
WebBrowser 加载状态判断,很神奇的地方 RRS feed

  • 问题

  • 我都代码是:

     

    public void DownLicense(string dogInfo)
      {
       string url = System.Configuration.ConfigurationManager.AppSettings["default"] + "?i=" + dogInfo;
       WebBrowser wb = new WebBrowser();
       wb.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
       
       wb.Navigate(new Uri(url));
    
       while (wb.ReadyState != WebBrowserReadyState.Complete)
       {
        MessageBox.Show("D");
       }
       MessageBox.Show(wb.DocumentText);   
      }
    
      void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
      {
       state = 1;
      }
    

     


    如果把MessageBox.Show("D");去掉,就会陷入无限循环,加上就正常了,因为想在这个方法里自动获取网页内容,所以不知道怎么解决了

    感觉像是多线程的问题,MessageBox弹框的时候就像当前线程异步了一样,求高手解答,或是其他可以在一个方法里得到返回内容的解决方法也行


    forget flying
    • 已编辑 醉猫 2011年6月17日 8:05 增加描述
    2011年6月17日 7:56

答案

  • 【方法一】尝试这样做:

    1)请注释掉以下代码:

    while (wb.ReadyState != WebBrowserReadyState.Complete)
       {
       MessageBox.Show(
    "D");
      }

    然后把“MessageBox.Show(wb.DocumentText); ”挪动到“void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) ”中。

    【方法二】保持你的源码不改变,把"MessageBox.Show("D");"改成System.Thread.Sleep(1000);


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请讨论
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处

    • 已标记为答案 醉猫 2011年6月20日 1:47
    2011年6月18日 3:27
    版主

全部回复