我想知道是否.NetHttpClient
async
方法在新线程或主线程中运行。
例如,在我的控制台应用程序中,我调用async
使用以下方法下载 URL 内容HttpClient.GetStringAsync
method.
此方法 (GetStringAsync) 会在新的单独线程中运行吗?
一般来说,异步 I/O 方法不使用单独的线程。我在我的博客文章中详细解释了这一点没有线索.
然而,在这个具体案例中,这并不完全正确。WebRequest
.NET 中基于 API 长期以来一直支持异步操作,但实际上总是将 HTTP 代理检测和 DNS 查找作为同步,甚至通过它们的异步 API。当HttpClient
开始流行。不幸的是,微软决定not修复这些长期存在的错误。
So, HttpClient
包裹它的WebRequest
调用线程池中的线程。请注意,它仍然使用“异步”API,因此只有同步部分(HTTP 代理和 DNS 查找)是在线程池线程上完成的;请求的其余部分是真正异步的。至少,对于some平台。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)