在VB.net中使用“异步”和“等待”,无需返回

时间:2019-02-20 18:19:39

标签: vb.net async-await

我有一个Web应用程序,需要在单击按钮后将一批文件从一个文件共享服务器复制到另一台文件共享服务器,异步和主动似乎是实现此目的的一种好方法。 我不确定是否需要Task.Run在这里? RunMoving()是否可以更好地移入另一个类以提高性能?

这是我的VB.NET代码,如下所示:

Public Sub FileMoving()
    PdfsMovingAsync()
    DoSomethingElse()
End Sub

Private Async Sub PdfsMovingAsync()
    Await Task.Run(Sub() RunMoving())
End Sub

Private Sub RunMoving()
    'Thread.Sleep(2000)
End Sub

1 个答案:

答案 0 :(得分:2)

PdfsMovingAsync应该返回Task。您要避免使用异步订阅。

由于DoSomethingElse不依赖于PdfsMovingAsync首先完成,因此它们可以同时运行。

Public Sub FileMoving()
    PdfsMovingAsync()
    DoSomethingElse()
End Sub

Private Function PdfsMovingAsync() As Task
    Return Task.Run(Sub() RunMoving())
End Function 

Await最好用于首先依赖某个函数的函数。

引用Async/Await - Best Practices in Asynchronous Programming