所以我有这个计算作业,需要启动 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
最佳答案
您可以保留任务
列表并使用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())
关于vb.net - 一旦条件为真就返回而不挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45045646/