用Com方式启动Civil3D时,经常会在第一次启动时出现各种异常.
1. RPC_E_CALL_REJECTED 0x80010001 被呼叫方拒绝接收呼叫
解决方案:外部程序通过COM启动AutoCAD时RPC_E_CALL_REJECTED的问题解决办
2. CO_E_SERVER_EXEC_FAILURE 0x80080005 服务器运行异常
一般会在第一次启动的时候出现,第二次启动的时候就好了.网上查找了很多资料,没有找到好的解决方案.可能跟具体的系统配置有关系.
解决办法,可以放在循环当中多次执行启动步骤.
1 int runCount = 0; 2 Autodesk.AutoCAD.Interop.AcadApplication cadApp = null; 3 while (true) { 4 runCount++; 5 try { 6 //Get the AutoCAD which is running 7 cadApp = (Autodesk.AutoCAD.Interop.AcadApplication)Marshal.GetActiveObject(programID); 8 break; 9 } catch { 10 try { 11 Type sType = Type.GetTypeFromProgID(programID); 12 cadApp = (Autodesk.AutoCAD.Interop.AcadApplication)Activator.CreateInstance(sType, true); 13 cadApp.Visible = true; 14 break; 15 } catch (Exception ex) { 16 //MessageBox.Show(string.Format("第{0}次启动CAD失败", runCount)); 17 if (runCount >= 3) { 18 MessageBox.Show("不能打开Civil3D. \n 错误信息 : " + ex.Message); 19 break; 20 } 21 } 22 } 23 }