首页 > 解决方案 > 如何并行运行 3 个子程序并等到所有三个子程序都完成后才能在 VB 中继续

问题描述

我基本上有 3 个潜艇,我希望他们一起跑,一旦他们完成并继续主潜艇。我可以在 C# 中做到这一点,我很难在 VB.Net 中做到这一点

基本上我正在尝试完成类似下图的事情。

                   |---sub1()---|
Start sub()--------|---sub2()---|---main()----> end sub()
                   |---sub3()---|

Private Sub Manual_Trades_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim T1 As New Task(AddressOf sub1)
    Dim T2 As New Task(AddressOf sub2)
    Dim T3 As New Task(AddressOf sub3)
    T1.Start()
    T2.Start()
    T3.Start()
    Task.WaitAll(T1, T2, T3)
End Sub 

Sub sub1()
    'Do something that takes time
End Sub

Sub sub2()
    'Do something that takes time
End Sub

Sub sub3()
    'Do something that takes time
End Sub

标签: vb.netmultithreadingasynchronous

解决方案


基于您的第一个样本。您可以尝试改用 Task.Run 。似乎这是建议的方法

Sub sub1()
    Threading.Thread.Sleep(1000)
    Console.WriteLine("1")
End Sub

Sub sub2()
    Threading.Thread.Sleep(2000)
    Console.WriteLine("2")
End Sub

Sub sub3()
    Threading.Thread.Sleep(3000)
    Console.WriteLine("3")
End Sub

Sub RunAllAndWait()

    Dim T1 As Task = Task.Run(AddressOf sub1)
    Dim T2 As Task = Task.Run(AddressOf sub2)
    Dim T3 As Task = Task.Run(AddressOf sub3)

    Task.WaitAll({T1, T2, T3})

End Sub

推荐阅读