我在 UI 线程中运行了一些方法。在此方法中创建了一个新线程。我需要 UI 线程等待这个新线程完成,因为我想等待一些结果才能继续该方法。但我不想让 UI 冻结,所以 UI 线程在等待的同时,它也在响应 UI。
这是我现在拥有的:
Dim _WaitHandler As New System.Threading.AutoResetEvent(False)
Public Sub Method()
For i As Integer = 0 To 100
Dim myThread As Thread = New Thread(AddressOf ThreadMethod)
myThread.Start()
_WaitHandler.WaitOne()
//next loop or exit?
Next
//this code I want to process after myThread is finished
//but also I don´t want to freeze UI during WaitOne method
End Sub
Private Sub ThreadMethod()
//do something...
_WaitHandler.Set()
End Sub
似乎在WaitOne
方法 UI 线程休眠并且它没有响应因此 UI 被冻结期间。你知道问题出在哪里吗?感谢你们。
编辑这是一个忘记写给你的东西:myThread 创建是在一个 for 循环中。myThread 完成后,根据 myThread 的结果,我必须决定是继续循环(下一个循环)还是退出循环。我的代码已编辑。
如果我使用 BackgroundWorker,UI 线程将自动继续下一个循环。