В моем приложении мне нравится пытаться быть последовательным и использовать 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;
}
Мой вопрос состоит в следующем:
Приводит ли этот код к созданию нового потока в фоновом режиме при выполнении вызова?
а также
Если мои вызовы на эту другую услугу занимают около 500 мс, это заставит меня съесть слишком много потоков, когда сервис находится под производственной нагрузкой около 100 запросов в секунду?
PostAsync
не приводит к созданию потока, нет. Фактически, был ли код, который будет использоваться асинхронно, нить никогда не понадобится для выполнения этой работы. В вашем случае здесь у вас текущий поток сидит вокруг, ничего не делая, пока вы ждете окончания операции, так что это единственный поток, время которого потребляется/теряется при выполнении этой операции.