我有一些VB.NET代码,比如:
If (condition1) Then
Dim Task1 = function1Async()
Dim Task2 = function2Async()
Await Task.WhenAll(Task1, Task2)
Else
Dim Task1 = function1Async()
Dim Task3 = function3Async()
Await Task.WhenAll(Task1, Task3)
End If
但我更愿意做这样的事情:
Dim Task1 = function1Async()
Dim Task2 = New Task()
Dim Task3 = New Task()
If (condition1) Then
Task2 = function2Async()
Else
Task3 = function3Async()
End If
Await Task.WhenAll(Task1, Task2, Task3)
但是,“new Task()”并不产生一个可等待的任务。是否有某种可以作为占位符创建的最小等待任务,以防以后没有创建真正的任务?
您不应该对异步世界中的任务使用
您可以通过调用
既然你问了,你就可以有一个指向虚拟委托的“空白”任务。但是,我认为使用有条件填充的任务列表会更好,更干净:
Dim TaskList As New List(Of Task)
TaskList.Add(function1Async())
If (condition1) Then
TaskList.Add(function2Async())
Else
TaskList.Add(function3Async())
End If
Await Task.WhenAll(TaskList)