vb.net中的线程测试
我正在尝试学习多线程,我被这个示例困住了vb.net中的线程测试,vb.net,multithreading,Vb.net,Multithreading,我正在尝试学习多线程,我被这个示例困住了 Imports System.Threading Public Class Form1 Dim myThread As System.Threading.Thread = New Thread(AddressOf Me.AddItems) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.L
Imports System.Threading
Public Class Form1
Dim myThread As System.Threading.Thread = New Thread(AddressOf Me.AddItems)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myThread.Start()
End Sub
Public Sub AddItems()
Dim i As Int32
Dim n As Int32 = 1
Dim s As String = ""
For i = 0 To 100
s = n.ToString
ListBox1.Items.Add(s)
n *= 2
Thread.CurrentThread.Sleep(100)
Next
End Sub
End Class
我得到以下错误:
跨线程操作无效:从访问的控件“ListBox1”
“创建线程的线程以外的其他线程”
ListBox1.Items.Add是问题所在
无法从非UI线程更新UI<代码>列表框1
由创建,属于主UI线程
您应该使用来执行UI更新
使用类似于:
Private Sub MyMethodOnANonUIThread()
Dim s As String = "Hello, World!"
Me.Invoke(New MethodInvoker(Sub() UpdateTheControlOnUIThread(s)))
End Sub
Private Sub UpdateTheControlOnUIThread(ByVal updateValue As String)
ListBox1.Items.Add(updateValue)
End Sub
ListBox1.Items.Add是问题所在
无法从非UI线程更新UI<代码>列表框1
由创建,属于主UI线程
您应该使用来执行UI更新
使用类似于:
Private Sub MyMethodOnANonUIThread()
Dim s As String = "Hello, World!"
Me.Invoke(New MethodInvoker(Sub() UpdateTheControlOnUIThread(s)))
End Sub
Private Sub UpdateTheControlOnUIThread(ByVal updateValue As String)
ListBox1.Items.Add(updateValue)
End Sub