gpt4 book ai didi

c# - 在没有中间工作的情况下将 await 与异步方法一起使用有什么好处吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:31 25 4
gpt4 key购买 nike

MSDN使用以下示例:

async Task<int> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");

DoIndependentWork();

string urlContents = await getStringTask;

return urlContents.Length;
}

因此 GetStringAsync 方法基本上会 promise 在将来的某个时间点返回字符串类型的任务,但是在调用 DoIndependentWork 时,getString 还没有被 awaited 所以它可以继续做其他工作直到发生这种情况。

但是文档然后说

If AccessTheWebAsync doesn't have any work that it can do between calling GetStringAsync and awaiting its completion, you can simplify your code by calling and awaiting in the following single statement.

string urlContents = await client.GetStringAsync();

如果您只想立即等待某事,那么这样做有什么好处吗?或者只是为了让您提前准备在应用程序开发时使用异步?

最佳答案

主要优点是await <some-operation-that-does-I/O>不会占用线程等待,提高资源利用率。只有在 I/O 完成时才会委托(delegate)线程。与等待线程相比,系统上未完成的 I/O 请求可能更多。 Stephen Cleary 有一个 article on this这比我能解释得更有说服力。

关于c# - 在没有中间工作的情况下将 await 与异步方法一起使用有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36762679/

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