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組件嗎,請大牛們幫忙看看是什么原因, 謝謝了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67660.html
上一篇:MFC顯示cdr格式的檔案
下一篇:為什么我的代碼會無法運行?
