gpt4 book ai didi

c# - 为什么 ReadAsStringAsync 是异步的?

转载 作者:可可西里 更新时间:2023-11-01 09:04:58 29 4
gpt4 key购买 nike

那么,在下面的代码片段中,为什么 ReadAsStringAsync 是一个异步方法?

var response = await _client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();

最初我希望 SendAsync 发送请求并将响应流加载到内存中,此时读取该流将是进程内 CPU 工作(而不是真正的异步)。

深入源代码的兔子洞,我得到了这个:

 int count = await _stream.ReadAsync(destination, cancellationToken).ConfigureAwait(false);

https://github.com/dotnet/corefx/blob/0aa654834405dcec4aaa9bd416b2b31ab8d3503e/src/System.Net.Http/src/System/Net/Http/Managed/HttpConnection.cs#L967

这让我觉得也许连接是打开的,直到响应流从进程之外的某个源实际读取?我完全希望我缺少一些关于来自 Http Connections 的流如何工作的基础知识。

最佳答案

SendAsync() 等待请求完成以及对开始的响应到达。

它不会缓冲整个响应;这使您可以流式传输大量响应,而无需将整个响应保存在内存中。

关于c# - 为什么 ReadAsStringAsync 是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977265/

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