HttpClient是否旋转一个新线程,即使我立即得到返回任务的结果

本文关键字:返回 结果 任务 线程 旋转 是否 一个 HttpClient 新线程 | 更新日期: 2023-09-27 18:29:10

在我的应用程序中,我喜欢尝试保持一致,并尽可能使用HttpClient。然而,有时我不需要HttpClient的异步属性,所以我只需在返回Task后立即获得它的Result,如下面的代码所示。

public HttpResponseMessage httpPostWrapperMethod(string postBody, string url)
{
    HttpContent content = new StringContent(postBody, Encoding.UTF8, "application/json");
    HttpClient client = new HttpClient();
    return client.PostAsync(url, content).Result;
}

我的两部分问题是:

这段代码是否会导致在进行调用时在后台旋转一个新线程?

如果我对另一项服务的调用花费了大约500毫秒,当该服务的生产负载大约为每秒100个请求时,这会不会导致我占用太多线程?

HttpClient是否旋转一个新线程,即使我立即得到返回任务的结果

PostAsync不会导致创建线程。事实上,如果代码是异步使用的,那么任何线程都不需要做任何事情来完成这项工作。在您的情况下,当您等待操作完成时,当前线程无所事事,因此这是执行此操作时唯一消耗/浪费时间的线程。