我必须在vb中编写一个多线程程序,它可以同时处理目录中的文件。 问题是它可以运行几个小时。然后它突然停留在" Thread.Sleep(500)"因为所有3个线程的isAlive方法都返回" true"价值,但" StartSub"在所有线程中结束......似乎没有终止。我的代码错了或可能是什么问题?
基本上,该计划如下:
private sub main()
importThread = New Thread(AddressOf StartSub)
importThread2 = New Thread(AddressOf StartSub)
for each file in directory
While True
If importThread.IsAlive And importThread2.IsAlive Then
Thread.Sleep(500)
Else : Exit While
End If
End While
If importThread.IsAlive Then
importThread2 = New Thread(AddressOf StartSub)
importThread2.IsBackground = True
importThread2.Start()
Else
importThread = New Thread(AddressOf StartSub)
importThread.IsBackground = True
importThread.Start()
End If
next
End sub
Private Sub StartSub(ByVal tp As Object)
'Read fileinfo and process it for something
end Sub
答案 0 :(得分:0)
似乎线程处理很好,垃圾收集器将终止线程留下的线程资源取出来。程序卡住是因为线程从Form控件恢复了信息,有时即使调用,表单上的控件也没有响应。这使线程挂起。