2010-11-07 12 views

risposta

11

Utilizzando un timer, naturalmente. Per esempio:

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

Non che attendere che il browser web alla navigazione in realtà completa prima di annullare, piuttosto che finire che dopo un certo numero di tempo? –

+2

Erm, no. Non c'è niente da finire. Basta navigare altrove. –

+1

quindi quando ticchettio il timer cercherò da qualche altra parte? – MonsterMMORPG

0

Sto usando l'approccio seguito in base a Navigating e Navigated eventi. Il tempo tra questi due eventi viene osservato per il reindirizzamento verso i pgae domestici.

 //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); 
    } 

Riferimento

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

Così fa 'br.Stop()' perché il controllo del browser Web smette di provare a navigare? – crush

Problemi correlati