所以我有这个计算工作,需要startng 6线程并等待那些完成。线程更改了类中的“本地”变量。 一旦局部变量是某个值,我想让函数返回“True”。但是,我想以一种不挂起线程的方式来做这件事。所以一个不变的“Do Loop”不会起作用。有没有标准的方法可以做到这一点?
Public Function Start(ByVal Cores As Integer) As Boolean
For i = 0 To 10
// Heavy work
Task.Factory.StartNew(Sub() Compute(Core, StartInt, EndInt))
Next
Do // <- How to avoid checking ThreadsTerimnated = ThreadsStarted every clockcycle?
// Threading.Sleep hangs thread.
If ThreadsTerminated = ThreadsStarted Then
MergeResults(Cores)
Return True
End If
Loop
End Function
答案 0 :(得分:4)
您可以保留Tasks
的列表并使用Tasks.WaitAll
Dim tasks As New List(Of Task)
For i = 0 To 10
// Heavy work
tasks.Add(Task.Factory.StartNew(Sub() Compute(Core, StartInt, EndInt)))
Next
Task.WaitAll(tasks.ToArray())