用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             }
View Code

相关文章: