gpt4 book ai didi

c# - 等待和异步在同一行

转载 作者:行者123 更新时间:2023-11-30 14:27:46 25 4
gpt4 key购买 nike

我了解 async 的工作原理以及它与 javascript promises 的比较,但我不确定像下面这样的行有什么好处

IdentityResult result = await UserManager.CreateAsync(user, model.password);

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

最佳答案

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

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

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

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

async Task<IdentityResult> CreateAsync()
{
// do something
await Task.Delay(1000);
// do something else
}

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

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

关于c# - 等待和异步在同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com