在VB .net中线程化多个WebBrowser

时间:2010-05-03 14:01:10

标签: vb.net multithreading browser ctrl

我正在制作一个标签内的多个webbrowser(每个标签1个预定义的webbrowser控件),我希望它们全部同时加载或其他单词必须在线程中运行。不幸的是,我觉得有一个有效的事实来自错误消息,这是不可能的。请帮我检查下面的简单程序代码及其错误,以防我尝试发布2个webbrowser控件但是当我把它留给单个Web浏览器控件时它工作正常。任何解决方法?

Imports System.Threading

Public Class Form1
Dim mythread1 As Thread
Dim mythread2 As Thread

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
mythread1 = New Thread(AddressOf mysub1)
mythread2 = New Thread(AddressOf mysub2)
mythread1.IsBackground = True
mythread2.IsBackground = True
mythread1.Start()
mythread2.Start()
End Sub

Public Sub mysub1()
Dim HTML As String
WebBrowser1.Navigate("about:blank")
mythread1.Abort()
End Sub
Public Sub mysub2()
WebBrowser2.Navigate("about:blank")
mythread2.Abort()
End Sub

2 个答案:

答案 0 :(得分:1)

以下msdn文章:“控件上有四种方法可以线程安全地调用:Invoke,BeginInvoke,EndInvoke和CreateGraphics以及InvokeRequired属性”

您无法从其他线程直接调用WebBrowser1.Navigate

关注How to: Make Thread-Safe Calls to Windows Forms Controls

答案 1 :(得分:0)

Web浏览器默认是异步的,因此您不需要对它们进行线程化,因为它们将按顺序运行。

如果是你的速度,那么可能会切换到webclient或httpwebrequest。您无需下载要运行的图像,并且可以对这些图像进行多线程处理。