Как запустить 3 саба параллельно и ждать, пока все три из них не будут сделаны, чтобы продолжить в VB - PullRequest
0 голосов
/ 01 февраля 2019

У меня в основном есть 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

1 Ответ

0 голосов
/ 01 февраля 2019

На основе вашего первого образца.Вместо этого вы можете попробовать использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...