vb.net动态gui多线程

时间:2015-08-04 22:48:45

标签: vb.net multithreading

我有一个我想要执行的代码循环,但我希望每个传递都是它自己的线程,所以执行很快。在这个传递中,我有几个GUI项目。以下是我的尝试:

sub somesub()
Dim w As WaitCallback = New WaitCallback(AddressOf WorkerDoWork)
for 1 to 10
ThreadPool.QueueUserWorkItem(w, i)
next
end sub
sub WorkerDoWork(i as integer)
dim x as string = drpitem.Selecteditem
end sub

我也尝试过:

sub somesub()
Dim threads As New List(Of Thread)()
for 1 to 10
threads.Add(New Thread(New ParameterizedThreadStart(AddressOf WorkerDoWork)))
threads(i).Start()
next
end sub
sub WorkerDoWork(i as integer)
dim x as string = drpitem.Selecteditem
end sub
关于交叉传播的两个错误。如何在不出错的情况下执行动态多线程循环。还有一点需要注意的是,我可以成功地在GUI中使用后台工作者而不会出错,但我不知道如何动态地使用后台工作程序。

编辑:

在阅读了你的建议marco之后,我想出了答案

sub somesub()
Dim w As WaitCallback = New WaitCallback(AddressOf WorkerDoWork)
for 1 to 10
ThreadPool.QueueUserWorkItem(w, i)
next
end sub
sub WorkerDoWork(i as integer)
dim x as string
invoke(sub() x = drpitem.Selecteditem)
end sub

关键是在中断的地方使用调用,它会起作用。

1 个答案:

答案 0 :(得分:0)

问题是,您正在创建一个线程,然后访问另一个正在处理的对象。看看这里:

  

VB.NET Delegates and Invoke - can somebody explain these to me?