Я пытаюсь использовать кучу веб-браузеров в некоторых фоновых потоках. Это не проблема, когда я использую элементы управления webbrowser, которые я разместил в форме в представлении дизайна, но теперь, когда они создаются во время выполнения.Управление вебером управления веб-браузером из фонового потока vb.net
Я объявляю массив веб-браузером, глобально:
Dim webbroswers(-1) As WebBrowser
Следующий код на главной теме:
ReDim Preserve webbroswers(somenum)
For i = 0 To sumnum
webbroswers(currentbrowsermax + i) = New WebBrowser
Next
Затем этот код выполняется на фоне резьбы:
If webbroswers(num).InvokeRequired Then
webbroswers(num).Invoke(Sub() webbroswers(num).Navigate(someurl))
Else
webbroswers(num).Invoke(Sub() webbroswers(num).Navigate(someurl))
Программа вылетает с этого момента со следующей ошибкой:
Unable to get the window handle for the 'WebBrowser' control. Windowless ActiveX controls are not supported.
Любая помощь по этому вопросу будет замечательной. Также, если кто-то знает, как подавить ошибки скрипта, я думаю, что это может помочь. Я пробовал: WebBrowser (num) .ScriptErrorsSuppressed = True, но это не сработает (это не работает в другом месте моего кода при запуске в основном потоке) Спасибо!
Я не уверен, что вы собираетесь делать в состоянии, которое вылетает. Также не уверен, почему вы хотите использовать BWG: он предназначен для «действий без GUI», а браузер является элементом GUI (и, следовательно, должен выполняться в основном потоке). Пожалуйста, опишите точные условия, которые вы хотите учитывать. – varocarbas
В основном у меня есть код, который делает вещи с помощью webbroswer. Я хочу сделать это многопоточным, чтобы он мог делать это с помощью нескольких веб-браузеров (указывал на несколько разные адреса) – FraserOfSmeg
Пример, где вы можете использовать BGW: браузер1 подключается к url1 и начинает загрузку; пока вы хотите разрешить пользователям использовать браузер2, чтобы идти куда угодно. То есть, BWG не предназначен для работы с браузером 1 и браузером2 (переход на разные URL-адреса), но для того, чтобы показывать GUI-элемент в то время как дорогие, не GUI-действия выполняются (в этом случае загрузка браузера 1). Если для всего (или большинства) того, что вы хотите сделать, требуется GUI (например: наличие двух браузеров, открытых только для навигации), BWG не требуется. – varocarbas