vb.net - 如何并行运行 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
解决方案
基于您的第一个样本。您可以尝试改用 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
推荐阅读
- angular - 防止通过 toastie 显示多个错误
- pyspark - 在 Pyspark [非熊猫 df] 中将许多数据帧合并为一个
- parse-platform - 在解析查询ionic4中获取用户关系用户
- javascript - 使用 Nginx 重定向反应子路由
- excel - Ability to tag colored text from Excel file for CSV export?
- imagemagick - 在 ImageMagick 中从 GIF 获取第一个转换的 PNG 文件
- java - 如何在原始堆栈跟踪的位置集中记录异常?
- android - Dagger 组件是否绑定到实例化它的对象?
- http-headers - Cross-Site Request Forgery - 验证“Referer”标头的值,并为每个提交的表单使用一次性随机数
- python - 图像中唯一 CIELab 颜色的数量