gpt4 book ai didi

c# - HttpClient Async 方法会在新线程中运行吗

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

我想知道 .Net HttpClient async 方法是在新线程中运行还是在主线程中运行。

例如,在我的控制台应用程序中,我调用 async 方法来使用 HttpClient.GetStringAsync 方法下载 URL 内容。

此方法 (GetStringAsync) 会在新的单独线程中运行吗?

最佳答案

通常,异步 I/O 方法不使用单独的线程。我在我的博客文章中对此进行了详细解释 There Is No Thread .

但是,在这种特定情况下,情况并非如此。 .NET 中基于 WebRequest 的 API 长期以来一直支持异步操作,但实际上一直以同步的方式完成 HTTP 代理检测和 DNS 查找,即使是通过它们的异步 API。这是在 HttpClient 开始流行时注意到的。不幸的是,Microsoft 决定修复这些长期存在的错误。

因此,HttpClient 将其 WebRequest 调用包装在线程池线程中。请注意,它仍在使用“异步”API,因此只有同步部分(HTTP 代理和 DNS 查找)在线程池线程上完成;请求的其余部分是真正异步的。至少,对于一些平台来说是这样。

关于c# - HttpClient Async 方法会在新线程中运行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237250/

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