Как я могу подождать, пока веб-браузер загрузит страницу?
я пытался:
Vb.Net Ждите завершения веб-браузера
webbrowser1.navigate(url)
msgbox("done")
Как я могу подождать, пока веб-браузер загрузит страницу?
я пытался:
Vb.Net Ждите завершения веб-браузера
webbrowser1.navigate(url)
msgbox("done")
Do While wb.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Loop
Это подход, который я использовал, когда я был с той же проблемой. Добавляя обработчик, вам не нужно использовать таймер для ненужной обработки, вместо этого событие будет срабатывать, как только документ будет загружен. Не обманывайтесь именем документа, завершенным, он действительно ждет загрузки веб-страницы.
AddHandler (webbrowser1.DocumentCompleted), AddressOf WebpageLoaded
webbrowser1.Navigate(url)
Public Sub WebpageLoaded(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
MessageBox.Show("Done")
End Sub
Я не говорю, что это лучший способ пойти, но он работал хорошо для меня :)
Благодарим за то, что вы сделали правильный путь. Принимаемый ответ слишком часто используется сегодняшними новыми программистами. –
Я унаследовать новый класс от управления WebBrowser:
Public Class WebBrowserSyncFW
Inherits WebBrowser
Public Async Function NavigateSync(ByVal urlString As String, Optional ByVal timeoutmillisec As Integer = 30000) As Task(Of Boolean)
Dim IsLoaded As Boolean = False
Me.ScriptErrorsSuppressed = True
Me.Navigate(urlString)
AddHandler Me.DocumentCompleted, Sub(sender As Object, e As WebBrowserDocumentCompletedEventArgs)
IsLoaded = True
End Sub
For i = 1 To timeoutmillisec/100
Await Task.Delay(100).ConfigureAwait(False)
If IsLoaded = True Then Return True
Next
Return False
End Function
End Class
Использование:
If Await WebBrowserSyncFW1.NavigateSync("http://www.youtube.com") Then
MsgBox("Page is loaded!", MsgBoxStyle.Information)
Else
MsgBox("Timeout!", MsgBoxStyle.Exclamation)
End If
сейчас он работает! :) Спасибо!! – BlackOpty
-1 Для Никаких объяснений, используя [DoEvents] (http://www.codinghorror.com/blog/2004/12/is-doevents-evil.html) и используя Спящий API без необходимости –
первый работает отлично, проверьте это вне, второй действительно Ненужный – nnm