/ / Visual Basic-Webページが読み込まれないのを待つ-vb.net、ブラウザ、スリープ

Visual Basic - Webページが動作しないようにするのを待つ - vb.net、ブラウザ、スリープ

Webサイトをロードしようとしています。Webサイトが完全にロードされるのを待ってから、ロードされるとメッセージボックスを表示します。

    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

...、それはうまくロードされます。

回答:

回答№1は0

UIが無限(または少なくとも無限に近い)ループでUIスレッドを結び付けているため、UIはページをロードしません。

の代わりに 待っている ブラウザがロードするために、非同期に応答します イベント ブラウザの読み込みの。このようなもの:

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

何かが起こるのを待つためにアプリケーションを「一時停止」したいと思うときはいつでも、サブスクライブする必要がある可能性が高い イベント それが起こったとき。


回答№2の場合は0

私が「この権利を確認しているのは、あなたがチェックを実行するたびにメインスレッドを停止させる」という事実によるものです。 DocumentCompleted イベント?