即使我立即获得返回任务的结果,HttpClient是否会旋转新线程?

tez*_*nia 1 c# asp.net async-await dotnet-httpclient

在我的应用程序中,我喜欢尝试并保持一致,并尽可能使用HttpClient.但是,有时我不需要HttpClient的异步属性,因此我只需在返回后立即获取任务的结果,如下面的代码所示.

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;
}
Run Code Online (Sandbox Code Playgroud)

我的两个问题是:

这个代码在拨打电话时会导致新的线程在后台旋转吗?

如果我对这个其他服务的调用大约需要500毫秒,那么当服务处于大约100个请求/秒的生产负载时,这是否会导致我吃太多线程?

Ser*_*rvy 6

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