вот мой коднужно объяснение об этой ошибке «Указанный приказ недействителен».
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'BackgroundWorker1.RunWorkerAsync()
myFunction()
End Sub
Private Sub myFunction()
WebBrowser1.Navigate("http://google.com")
While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
End While
TextBox1.Text = WebBrowser1.Document.Body.OuterText.ToString
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
myFunction()
End Sub
, когда я запускаю это и нажмите на кнопку Button1 он работает нормально, но когда я изменить button1 к этому:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
я получаю сообщение об ошибке «Указанные литые не действует»
моя цель здесь очень просто
1. нажмите кнопку, чтобы загрузить страницу
2. Дождитесь загрузки страницы комп letely
3. затем захватить outerText страницы
Вы не можете получить прямой доступ управления формы изнутри BackgroundWorker или другого типа резьбы. Почему вы не просто используете событие WebBrowser1.DocumentCompleted? –
Я могу использовать этот Control.CheckForIllegalCrossThreadCalls = False код для доступа к элементу управления формой, но мой вопрос - почему я не могу этого сделать. любое объяснение? – user2932692
Точка BGW состоит в том, чтобы выполнить некоторую длительную задачу на заднем плане, оставляя пользовательский интерфейс отзывчивым. Метод ReportProgress позволяет BGW отправлять информацию обратно в пользовательский интерфейс, когда это необходимо. 'CheckForIllegalCrossThreadCalls = False' не является ответом. Ничего из этого не требуется - событие запускается при загрузке страницы. – Plutonix