当我遇到这段代码时,我正在阅读关于Microsoft Identity的这篇文章:
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded) {
//.. REDUCTED .. //
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这个代码正在使用CreateAsync并等待它,而不是使用同步方法?
现在,这会阻塞直到CreateAsync返回,为什么不使用同步方法呢?使用异步方法和等待它有什么区别,优点或原因?
谢谢
整个观点async并且await能够说"我在这里没有任何有用的进展,所以也许我正在使用的线程可以在其他地方找到一些有用的工作."
确实,两个版本(你所展示的,以及潜在的同步版本)都是"阻止",但其中一个async版本(版本)没有捆绑一个没有用的线程.当awaitable完成其工作时,将找到合适的线程(在此上下文中,任何线程池线程都适合)以恢复处理请求的工作.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |