【问题标题】:Do I need to wait for asynchronous method to complete before disposing HttpClient?在处理 HttpClient 之前,我是否需要等待异步方法完成?
【发布时间】:2014-10-22 04:25:23
【问题描述】:

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

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

由于PostAsJsonAsync没有立即完成执行,并且httpClient在退出块时被释放,所以请求是否总是正确发送?

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

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

【问题讨论】:

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


    【解决方案1】:

    使用HttpClient的异步API时,推荐await这些方法:

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

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

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

    【讨论】:

      【解决方案2】:

      您必须等待或将客户端保持在范围内。

      【讨论】:

      • 你有这个来源吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多