Program czeka na załadowanie WebBrowser

0

Witam ;)
Potrzebuje funkcji dzięki której byłbym w stanie sprawdzić czy strona jest załadowana do końca. Mam coś takiego, ale nie wiem czego użyć żeby program czekał w tym miejscu.

 
public bool WebBrowserLoadingComplete(WebBrowser webBrowser)
        {
            while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
            {
                 ????
            }
            return true;
        }

Dodatkowo mam problem z wywołaniem tej funkcji. Wyświetla się, że "The name 'WebBrowserLoadingComplete' does not exist in the current content". Funkcja i wywołanie są w jednej klasie.

 
if(WebBrowserLoadingComplete(webBrowser))
{ ... }

Pozdrawiam :)

0

Uruchamiaj tą metodę w oddzielnym wątku i gdy nie jest załadowana to użyj zatrzymania wątku (sam robiłem i zamrażałem na 100ms) ;)

1

WebBrowser ma Event LoadCompleded czy cos w tym stylu.

1

@Pawell1029:

public bool WebBrowserLoadingComplete(WebBrowser webBrowser)
{
 while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
 {
       Thread.Sleep(100); //czeka 100ms 
 }
 return true; 
} 

Pamiętaj że tam gdzie czeka 100ms program zatrzymuje się i nie może nic obsługiwać.

Edit: Pamiętaj o dodaniu using System.Threading;.

1

Co Cię powstrzymuje przed zrobieniem tego w evencie?

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            MessageBox.Show("Załadowano");
        }

Jeśli zrobisz to z Thread.Sleep będzie Ci mroziło formę co chwilę, musiałbyś to puścić w oddzielnym wątku a wtedy będzie dodatkowo problem jeśli byś chciał zaktualizować formę bo trzeba przez Invoke.

Co do tego czemu nie działa, tą metodę musisz wykonać z klasy w której masz webbrowser czyli prawdopodobnie Form1

1 użytkowników online, w tym zalogowanych: 0, gości: 1