CAD.NET关闭报错eNodocument
使用.NET打开、修改和保存CAD图形文档时时,在调用CloseAndDiscard或CloseAndSave方法后报异常eNodocument
代码如下:
[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方法,故报错。修改代码如下:
[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/
签名:成熟是一种明亮而不刺眼的光辉。