我希望用一个webbrowser实例顺序打开一系列的url,并触发documentcompleted事件。
简易代码如下:void a(string url)
{
    while(循环条件)
     {
      this.webbrowser.navigate(new Uri(url));
     }
}private void webbrowser_documentcompleted(参数)
{
  ……
  程序处理
}在调试的时候,我发现调用a(url)以后程序会不停地循环执行navigate(),根本不会触发documentcompleted事件。
而如果取消循环,仅仅调用一次navigate则可以触发事件。我的想法是,程序在执行a(url)的时候不会因为调用navigate而暂时挂起,而是不停地调用新的navigate使得webbrowser在载入网页没有完成的时候就被刷新,所以一直不能触发documentcompled。所以,想请教高手这个问题应该怎么解决。谢谢。

解决方案 »

  1.   

    while(循环条件) 
        { 
          this.webbrowser.navigate(new Uri(url)); 
          System.Threading.Thread.Sleep(3000);
        } 
      

  2.   

    List<string> t=new List<string>();//存放将要打开的所有URL地址
    private int n;//当前打开的URL的索引void a() 

          n=0;
          this.webbrowser.navigate(new Uri(t[n]));  } private void webbrowser_documentcompleted(参数) 

      n+=1;
      this.webbrowser.navigate(new Uri(t[n]));   …… 
      程序处理 

    个人愚见,不知可不可行
      

  3.   

    在documentcompleted事件里重新打开第二个URL
      

  4.   

    全局变量List<string> t=new List<string>();//所有URL列表
    全局变量int n;//当前URL的索引void a() 

        n=0;
        this.webbrowser.navigate(new Uri(t[n])); } private void webbrowser_documentcompleted(参数) 

      n+=1;
      this.webbrowser.navigate(new Uri(t[n]));   …… 
      程序处理 

    个人愚见,不知可不可行
      

  5.   

    在事件DocumentCompleted里再Navigate:void a() 

          this.webbrowser.navigate(url); 
    } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
               webBrowser1.Navigate(webBrowser1.Url);
    }
      

  6.   

    to lude8880: sleep()我试过了,不行。那是把整个进程都sleep掉,所有的执行全部停止。
    to iiceberg ZengHD: 这不失为一种方法,我回头试试。不过webbrowser有没有什么参数设置,可以让navigate在执行的时候其他的操作暂时停止呢?