Rem*_*igo 0 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.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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"跨线程操作无效:控制'ListBox1'从其创建的线程以外的线程访问"
小智 5
ListBox1.Items.Add(s)
是问题.
您无法从非UI线程更新UI. ListBox1
由...创建,属于主UI线程.
您应该使用Control.Invoke来执行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
Run Code Online (Sandbox Code Playgroud)