为什么这段代码使用Async方法?

Sam*_*Sam 2 c# async-await

当我遇到这段代码时,我正在阅读关于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返回,为什么不使用同步方法呢?使用异步方法和等待它有什么区别,优点或原因?
谢谢

Dam*_*ver 8

整个观点async并且await能够说"我在这里没有任何有用的进展,所以也许我正在使用的线程可以在其他地方找到一些有用的工作."

确实,两个版本(你所展示的,以及潜在的同步版本)都是"阻止",但其中一个async版本(版本)没有捆绑一个没有用的线程.当awaitable完成其工作时,将找到合适的线程(在此上下文中,任何线程池线程都适合)以恢复处理请求的工作.