2010-11-07 14 views

Répondre

11

En utilisant une minuterie bien sûr. Par exemple:

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

Ne serait-ce que d'attendre la WebBrowser réellement navigation complète avant d'annuler, plutôt que de mettre fin après une certaine quantité de temps? –

+2

Erm, non. Il n'y a rien à finir. Il suffit de naviguer ailleurs. –

+1

alors quand la minuterie cochée je vais naviguer ailleurs? – MonsterMMORPG

0

J'utilise l'approche suivante basée sur Navigating et Navigated événements. Le temps entre ces deux événements est observé pour la redirection vers la page d'accueil.

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

Référence

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

Ainsi, 'br.Stop()' est-ce que le contrôle du navigateur Web arrête d'essayer de naviguer? – crush