去掉 async 关键字有什么不同吗?

问题描述 投票:0回答:1

我正在学习 async/await 模式,想知道 async 关键字在这些类型的实例(伪代码)中的必要性。看来我的进程在两种方法中都是异步运行的,所以我想知道 async 关键字有什么区别(如果有的话)......?

Private sub Button_Click
 MyLongRunningFunction()
end sub

Private Function MyLongRunningFunction() 'Version with no async keyword
 Task.Run(Function()
  'My long running processes go here
  End Function)
End Function

Private Async Function MyLongRunningFunction() 'Version with async keyword
 Task.Run(Function()
  'My long running processes go here
  End Function)
End Function
vb.net asynchronous async-await
1个回答
0
投票

简而言之,async 关键字对于异步运行的方法来说不是必需的,但它确实启用了 await 的使用,从而可以更好地处理异步操作。

当一个方法被标记为 async 关键字时,它允许在该方法中使用 await 关键字。这允许更好地管理异步操作,例如在继续执行之前等待异步任务完成。

没有 async 关键字,您仍然可以使用 Task.Run 异步运行代码,如示例代码所示。但是,您将无法使用 await 来处理任务的完成。

在您的具体示例中,MyLongRunningFunction 的两个版本都将使用 Task.Run 异步运行长时间运行的进程。但是,如果要等待任务完成再继续,则需要在方法的异步版本中使用 await。

一般来说,当方法包含异步操作时,将方法标记为异步是一个很好的做法。这让其他开发人员清楚地知道该方法旨在异步使用,并允许使用 await 来处理任务的完成。

© www.soinside.com 2019 - 2024. All rights reserved.