在部署HttpClient之前是否需要等待异步方法完成?

时间:2014-10-22 04:25:24

标签: c# .net async-await dotnet-httpclient

我想知道这段代码是否按预期工作(将字符串发送到Web应用程序):

using (HttpClient httpClient = Util.CreateHttpClient())
{
    httpClient.PostAsJsonAsync("theurl", somestr);
}

由于PostAsJsonAsync没有立即完成执行,并且在退出块时处理了httpClient,请求是否总是正确发送?

或者我必须等待这样的任务:

using (HttpClient httpClient = Util.CreateHttpClient())
{
    httpClient.PostAsJsonAsync("theurl", somestr).Wait();
}

2 个答案:

答案 0 :(得分:2)

使用HttpClient的异步API时,建议您使用await这些方法:

using (HttpClient httpClient = Util.CreateHttpClient())
{
    await httpClient.PostAsJsonAsync("theurl", somestr);
}

这样,您可以确保完成异步方法,并确保在发送请求之前不会释放HttpClient

如果您需要同步API,请考虑查看WebClient

答案 1 :(得分:0)

您必须等待或保持客户端的范围。