CAD.NET关闭报错eNodocument
使用.NET打开、修改和保存CAD图形文档时时,在调用CloseAndDiscard或CloseAndSave方法后报异常eNodocument
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [CommandMethod( "OpenAndSave" , CommandFlags.Session)] public static void OpenAndSave() { try { DocumentCollection docsMgr = Application.DocumentManager; Document doc = docsMgr.Add( "map2d.dwt" ); docsMgr.MdiActiveDocument = doc; using ( var docLck = doc.LockDocument()) { doc.Database.SaveAs( "D:\\AA.dwg" , true , DwgVersion.AC1800, null ); doc.CloseAndDiscard(); //此处运行后报异常:eNodocument } } catch (System.Exception ex) { } } |
原来,为了防止多进程对图形文件进行操作,使用LockDocument方法上了个锁,使用的是using语法。问题就在于此,当using内调用CloseAndDiscard后,文档将不再存在(eNoDocument),然后此后默认会调用docLck的Dispose方法,故报错。修改代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [CommandMethod( "OpenAndSave" , CommandFlags.Session)] public static void OpenAndSave() { try { DocumentCollection docsMgr = Application.DocumentManager; Document doc = docsMgr.Add( "map2d.dwt" ); var prevActDoc = docsMgr.MdiActiveDocument; docsMgr.MdiActiveDocument = doc; using ( var docLck = doc.LockDocument()) { doc.Database.SaveAs( "D:\\AA.dwg" , true , DwgVersion.AC1800, null ); } docsMgr.MdiActiveDocument = prevActDoc; doc.CloseAndDiscard(); } catch (System.Exception ex) { } } |
作者:我也是个傻瓜
出处:http://www.cnblogs.com/liweis/
签名:成熟是一种明亮而不刺眼的光辉。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2018-02-26 缩放地图后格网问题
2015-02-26 ArcGIS放射状流向地图