Visual Basic - 等待网页加载不工作

Visual Basic - Wait for webpage to load not working

我正在尝试加载一个网站,等待它完全加载,然后在加载时显示一个消息框。

    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

但是,当我使用它时,尽管等待了大约 30 秒,但什么也没有发生。如果我删除所有东西留给我...

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

...,加载正常。

UI 不会加载页面,因为您已将 UI 线程捆绑在无限(或至少接近无限)循环中。

异步响应 event of the browser loading,而不是 等待 浏览器加载。像这样:

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

任何时候你发现自己想要 "pause" 一个应用程序等待某事发生,你很可能需要订阅一个 事件 当那件事发生时发生了。

如果我没看错,那是因为每次 运行 检查时您都会让主线程停止。不能在 DocumentCompleted 事件上添加一个事件处理程序吗?