Windows.Web.Http.HttpClient抛出COMException c#
我在我的UWP Windows 10应用程序中使用Windows.Web.Http.HttpClient抛出COMException c#,c#,windows,parallel-processing,uwp,comexception,C#,Windows,Parallel Processing,Uwp,Comexception,我在我的UWP Windows 10应用程序中使用Windows.Web.Http.HttpClient。我已经在我的应用程序中创建了一个HttpClient实例,并为所有HTTP调用重新使用连接。除了并行HTTP调用之外,其他一切都正常工作 每当我初始化一个并行HTTP请求时,并行线程第一次抛出下面的COMException。我捕获这个异常并重新发送http调用,它成功了。过了一会儿,如果我再次启动并行线程,它会再次失败 引发异常:System.Private.CoreLib.dll中的“Sy
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
他们说,当一个人同时对同一个对象执行两个
async
操作时,就会发生异常。对我来说,这听起来很奇怪,但如果是这样的话,锁定应该会对您有所帮助。发布您的代码。人们猜不出发生了什么或者为什么会失败。你在你的单例模式中使用了线程安全设计吗?是的。它是线程安全的。