是否可以/建议使用默认(空白)等待任务?

Bre*_*nt 2 .net vb.net task async-await

我有一些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
Run Code Online (Sandbox Code Playgroud)

但我更愿意做以下事情:

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)
Run Code Online (Sandbox Code Playgroud)

但是,"New Task()"并不会产生令人期待的任务.我是否可以创建一些最小的等待任务作为占位符,以防以后不创建真正的任务?

Ste*_*ary 5

您不应该将Task构造函数用于异步世界中的任务.

您可以通过调用创建已完成的任务Task.FromResult(0).

  • 这应该是公认的答案,因为它会产生最少的开销,并且是[推荐](http://social.msdn.microsoft.com/Forums/en-US/fab0a26f-f5d6-4740-8bf0-4133fe1543bc/doing-nothing- Stephen Toub的in-async-methods). (2认同)