2010-11-07 84 views

回答

11

使用过程中的定时器超时。例如:

public void NavigateTo(Uri url) { 
     webBrowser1.Navigate(url); 
     timer1.Enabled = true; 
    } 

    private void timer1_Tick(object sender, EventArgs e) { 
     timer1.Enabled = false; 
     MessageBox.Show("Timeout on navigation"); 
    } 

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { 
     if (e.Url == webBrowser1.Url && timer1.Enabled) { 
      timer1.Enabled = false; 
      // etc.. 
     } 
    } 
+0

那不是等待web浏览器来抵消,而不是结束它一定量的前后实际完成导航时间? – 2010-11-07 19:13:23

+2

呃,没有。没有什么可以结束的。只需导航到别处。 – 2010-11-07 19:16:08

+1

所以当计时器打勾时,我会在其他地方导航? – MonsterMMORPG 2010-11-07 19:43:55

0

我使用基于NavigatingNavigated事件下面的方法。观察这两次事件之间的时间重定向到家庭pgae。

 //Navigation Timer 
     timer2.Enabled = true; 
     timer2.Interval = 30000; 

     br.DocumentCompleted += browser_DocumentCompleted; 
     br.DocumentCompleted += writeToTextBoxEvent; 
     br.Navigating += OnNavigating; 
     br.Navigated += OnNavigated; 

     br.ScriptErrorsSuppressed = true; 
     br.Navigate(ConfigValues.websiteUrl); 

    private void OnNavigating(object sender, WebBrowserNavigatingEventArgs e) 
    { 
     //Reset Timer 
     timer2.Stop(); 
     timer2.Start(); 

     WriteLogFunction("OnNavigating||||||"+e.Url.ToString()); 
    } 

    private void OnNavigated(object sender, WebBrowserNavigatedEventArgs e) 
    { 
     //Stop Timer 
     timer2.Stop(); 

     WriteLogFunction("NAVIGATED <><><><><><><> " + e.Url.ToString()); 
    } 


    private void timer2_Tick(object sender, EventArgs e) 
    { 
     WriteLogFunction(" Navigation Timeout TICK"); 
     br.Stop(); 
     br.Navigate(ConfigValues.websiteUrl); 
    } 

参考

  1. Create a time-out for webbrowser loading method
  2. webbrowser timeout if page wont load
+0

那么br.Stop()会导致Web浏览器控件停止尝试导航? – crush 2017-12-14 03:03:05