Task.Run应该如何在VB.NET中调用异步方法?

Mik*_*nry 7 vb.net async-await

给定一个同时执行CPU和IO工作的异步方法,例如:

Public Async Function RunAsync() As Task
    DoWork()
    Await networkStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(False)
End Function
Run Code Online (Sandbox Code Playgroud)

以下哪个选项是从Visual Basic中的Task.Run调用该异步方法的最佳方法,为什么?

哪个是C#的VB等价物Task.Run(() => RunAsync())

Await Task.Run(Function() RunAsync())
' or
Await Task.Run(Sub() RunAsync())
Run Code Online (Sandbox Code Playgroud)

Task.Run中的Async/Await关键字是必要还是冗余?该评论声称它们是多余的,但这个答案表明在某些情况下可能是必要的:

Await Task.Run(Async Function()
                   Await RunAsync()
               End Function)
Run Code Online (Sandbox Code Playgroud)

ConfigureAwait在Task.Run中是否有用?

Await Task.Run(Function() RunAsync().ConfigureAwait(False))

Await Task.Run(Async Function()
                   Await RunAsync().ConfigureAwait(False)
               End Function)
Run Code Online (Sandbox Code Playgroud)

以上哪5个Task.Run选项是最佳实践?

注意:有一个类似的问题如何在Task.Run中调用异步方法?但它适用于C#,所选答案具有否定投票,并且不涉及ConfigureAwait.

Ste*_*ary 13

哪个是C#的VB等价物Task.Run(() => RunAsync())

我的VB非常生锈,但不应该是那个Sub,所以我选择:

Task.Run(Function() RunAsync())
Run Code Online (Sandbox Code Playgroud)

Task.Run中的Async/Await关键字是必要还是冗余?

我有关于这个主题博客文章.在这种情况下,它们是多余的,因为代表是微不足道的.

ConfigureAwait在Task.Run中是否有用?

只有你做了Await.