GIV*_*KEN 2 .net c# asp.net-mvc asynchronous async-await
采取这个基本行动:
[HttpGet]
public IActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
修改它以使用async/await:
[HttpGet]
public async Task<IActionResult> Index()
{
return await Task.Run(() => View());
}
Run Code Online (Sandbox Code Playgroud)
我很困惑这是否会改善我的代码.根据我的理解,await关键字将释放调用线程,以便它可以在其他地方使用,这样可以更好地利用可用线程.
但我实际上并没有做任何其他事情,只有这一件事正在返回一个观点.拥有async关键字实际上会在已编译的代码中引入状态机,这会增加复杂性.
让这个动作异步值得吗?有没有更好的方法来修改它以使其异步?
简短的回答是否定的.由于没有任何async进展,View()执行中没有地方编译器可以释放线程以允许其他工作在同一个线程上发生.
我会说这个特殊的方法async可能(甚至稍微)性能更差,因为编译器需要修改你的代码,使得执行的更复杂,一旦你使用async关键字.
async如果你有很多其他的行动实际上正在利用,那么我能看到的唯一好处就是保持一致async.如果你真的想有一个Task<T>一致性的目的签名,您可以考虑:
public Task<IActionResult> Index()
{
return Task.FromResult(View());
}
Run Code Online (Sandbox Code Playgroud)
(请注意,不async涉及关键字,也没有Task.Run启动新任务来运行)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |