win7 系统多线程并发调用Dcom远程组件失败,返回“远程过程调用失败,未能执行。(从 HRESULT 异常: 0x800706BF)
古巴与八股 2016-12-09 10:42:37
win7 系统客户端多线程并发调用VxWorks服务端的Dcom远程组件,当线程数超过6个的时候,客户端就会异常终止,返回:
“未经处理的异常:
未经处理的异常: System.Runtime.InteropServices.COMException: 远程过程调用失败
且未执行。 (异常来自 HRESULT:0x800706BF)”。
Dcom接口类是用VxWorks的dcomwizard引导器生成的,非常简单的一个接口,传入int值。
virtual HRESULT MintIn (INT* para) =0;
//实现
STDMETHODIMP IntinoutImpl::MintIn(INT * para) {
printf("printf %d ", *para);
return S_OK;
}
windows系统的客户端多线程调用
System.Guid guid = new Guid("{0xeee5xx90,0x3x60,0x11x6{0x00,0xx9,0x00,0x00,0x00,0x00,0x00,0x00}}");
System.Type t = Type.GetTypeFromCLSID(guid, remoteIP, true);
object COMObject = System.Activator.CreateInstance(t);
bstrLib.Istr co = COMObject as bstrLib.Istr;
//多线程调用
for (int i = 1; i <= 10; i++) //超过6个线程有时能够调用成功,大多数情况下失败
{
Thread thread = new Thread(new ParameterizedThreadStart(RConnect));
thread.Start(i);
}
private static void RConnect(object k)
{
for (int i = 1; i <= 5000; i++)
{
//Thread.Sleep(300);
Com.co.MinIn(i);
}
}
有人用到过远程调用Dcom组件吗,请大牛们帮忙看看是什么原因, 谢谢了。