/ / Visual Basic - Warten Sie, bis die Webseite geladen ist, die nicht funktioniert - vb.net, browser, sleep

Visual Basic - Warten Sie, bis die Webseite nicht funktioniert - vb.net, browser, sleep

Ich versuche, eine Website zu laden. Warten Sie, bis sie vollständig geladen ist. Wenn sie geladen wird, wird ein Meldungsfeld angezeigt.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
WebBrowser1.Navigate("https://www.google.com")
Do Until WebBrowser1.ReadyState = 4
Threading.Thread.Sleep(100)
Loop
MsgBox("Loaded")
End Sub

Wenn ich dies jedoch benutze, passiert nichts, obwohl ich etwa 30 Sekunden gewartet habe. Wenn ich alles entferne, um mich zu verlassen ...

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
WebBrowser1.Navigate("https://www.google.com")
End Sub

..., es wird gut geladen.

Antworten:

0 für die Antwort № 1

Die Benutzeroberfläche lädt die Seite nicht, weil Sie den Benutzeroberflächenthread in einer Endlosschleife (oder zumindest in der Nähe einer Endlosschleife) gebunden haben.

Anstatt von warten um den Browser zu laden, antworten Sie asynchron auf die Veranstaltung des Browsers wird geladen. Etwas wie das:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
WebBrowser1.Navigate("https://www.google.com")
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
MsgBox("Loaded")
End Sub

Wenn Sie eine Anwendung "pausieren" möchten, um zu warten, dass etwas passiert, ist es sehr wahrscheinlich, dass Sie eine Anwendung abonnieren müssen Veranstaltung wenn das etwas passiert


0 für die Antwort № 2

Wenn ich dies richtig sehe, liegt es daran, dass Sie den Haupt-Thread jedes Mal zum Stoppen bringen, wenn Sie die Überprüfung ausführen Dokument abgeschlossen Veranstaltung?