vb.net - 一旦条件为真就返回而不挂起

标签 vb.net multithreading

所以我有这个计算作业,需要启动 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/

相关文章:

multithreading - 仅按需从 TThread 动态初始化和调用 LoadLibrary 一次

java - scala akka 微内核中线程 "main"java.lang.InstantiationException 中的异常

vb.net - 使用 VB.NET 检索 API JSON (https)(错误 : Canceled the request: Unable to create a secure SSL/TLS channel)

c++ - DLL中的Rtaudio使程序无响应

.net - 在另一个线程中使用 WPF 多边形

Java并发困惑

vb.net - 如何在 VB.Net 中创建一个可以从函数返回结果的 GroupBy?

c# - .NET BinaryWriter.Write() 方法——同时写入多种数据类型

c# - 在后台运行作业

python - 我如何计算 Python 中的字节码,以便我可以适本地修改 sys.setcheckinterval