Windows.Web.Http.HttpClient抛出COMException c#

时间:2018-01-23 13:06:36

标签: c# windows parallel-processing uwp comexception

我在我的UWP Windows 10应用中使用Windows.Web.Http.HttpClient。我在我的应用程序中创建了HttpClient的单个实例,并为所有HTTP调用重新使用连接。除了并行HTTP调用之外,一切正常。

每当我发起并行HTTP请求时,第一次并行时线程抛出下面的COMException。我捕获此异常并重新发送http调用并成功。过了一会儿,如果我开始并行线程,它再次失败。

  

抛出异常:System.Private.CoreLib.dll中的'System.Runtime.InteropServices.COMException'

     

WinRT信息:并发或交错操作改变了对象的状态,使此操作无效。

尝试冲浪并无法获得解决方案。有没有人遇到这个问题并得到解决方案?

以下是代码示例:

  

httpClient是一个可重复使用的实例。

       var response = await httpClient.SendRequestAsync(reqMsg).AsTask(cts.Token);
        if (response.IsSuccessStatusCode)
        {
            if (isBufferResponseRequired)
            {
                return await response.Content.ReadAsBufferAsync();
            }
            else
            {
                return await response.Content.ReadAsStringAsync();
            }
        }
     

我使用Tasks.Run()创建多个线程并并行访问httpClient。

1 个答案:

答案 0 :(得分:0)

他们在here中说,当一个人同时对同一个对象执行两次async操作时,会发生异常。这听起来对我来说很奇怪,但是如果是这种情况,锁定应该可以为您提供帮助。