/ / Visual Basic - Aguarde até que a página da Web seja carregada sem funcionar - vb.net, navegador, sleep

Visual Basic - Aguarde até que a página da Web carregue não funcionando - vb.net, navegador, sleep

Eu estou tentando carregar um site, aguarde para carregar totalmente e, em seguida, exibir uma caixa de mensagem quando ele é carregado.

    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

No entanto, quando eu uso isso nada acontece, apesar de esperar cerca de 30 segundos. Se eu remover tudo para me deixar com ...

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

..., carrega bem.

Respostas:

0 para resposta № 1

A interface do usuário não vai carregar a página porque você amarrou o thread de interface do usuário em um loop infinito (ou pelo menos próximo infinito).

Ao invés de esperando para o navegador carregar, responder de forma assíncrona ao evento do carregamento do navegador. Algo assim:

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

Toda vez que você se encontrar querendo "pausar" um aplicativo para esperar que algo aconteça, é muito provável que você precise se inscrever em um aplicativo. evento quando isso acontecer.


0 para resposta № 2

Se eu estou vendo isso direito, é devido ao fato de você estar fazendo o thread principal parar toda vez que você está executando o cheque. Você não pode simplesmente adicionar um manipulador de eventos no DocumentoCompletado evento?