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

sen*_*r k 5 c# windows parallel-processing comexception uwp

Windows.Web.Http.HttpClient在我的 UWP Windows 10 应用程序中使用。我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();
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ike 1

这里async,他们说当一个人同时对同一对象执行两个操作时会发生异常。这对我来说听起来很奇怪,但如果是这种情况,锁定应该会对您有所帮助。