【问题标题】:Threading multiple WebBrowser in VB .net在 VB .net 中线程化多个 WebBrowser
【发布时间】:2010-05-03 14:01:09
【问题描述】:

我正在标签内构建一个多个 webbrowser(每个标签有 1 个预定义 webbrowser 控件),我希望它们全部同时加载,否则必须在线程中运行。不幸的是,我觉得一个有效的事实来自错误消息,这是不可能的。请帮助我检查下面的简单程序代码及其错误,以防我尝试发布 2 个 Web 浏览器控件,但是当我将其留给单个 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

【问题讨论】:

    标签: vb.net multithreading browser ctrl


    【解决方案1】:

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

    您不能从另一个线程直接调用 WebBrowser1.Navigate

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多