Await和Async在同一行

Yeh*_*lam 3 c# async-await

我理解异步如何工作以及它与javascript承诺的比较,但我不确定如下所示的行如何能有任何好处

IdentityResult result = await UserManager.CreateAsync(user, model.password);
Run Code Online (Sandbox Code Playgroud)

因为我们正在创建一个异步调用并立即在线程上等待,所以在异步调用调用完成之前,不会执行后面的行.

i3a*_*non 5

好处是,如果该操作是真正异步的,那么在某些时候调用线程将被释放以在应用程序中执行其他工作,而不是同步阻塞.

这种用法带来了更高的可扩展性.

您还在等待操作完成后再继续操作.异步方法不会神奇地运行得更快,但它们可能会使用更少的资源,您通常可以同时运行多个资源.

如果我们想象CreateAsync看起来像这样:

async Task<IdentityResult> CreateAsync()
{
    // do something
    await Task.Delay(1000);
    // do something else
}
Run Code Online (Sandbox Code Playgroud)

然后在await Task.Delay(1000)你释放一个线程并异步等待而不是等待它一秒钟.该线程可以在您的进程中执行其他CPU操作,并避免上下文切换.

如果CreateAsync实现正确,那么有一些实际的异步操作而不是那样Task.Delay