Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的线程测试_Vb.net_Multithreading - Fatal编程技术网

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