问题描述:
在中望CAD中开发.NET程序中经常会有循环打开dwg并且激活为当前图纸,然后做一些事情后关闭dwg再打开新的dwg的操作,此时会遇到一些异常行为,如调试的过程中代码异常卡在某个地方,需要手动关闭dwg才能继续执行等问题,该如何解决?
解决方案:
这种情况多半是异步操作出问题,可以尝试在命令注册的时候加上CommandFlags.Session标识:
[DllImport("zwcad.exe", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl, EntryPoint = "zcedCmd")]
private static extern int zcedCmd(IntPtr vlist);
[CommandMethod("HelloCS2", CommandFlags.Session)]
static public void HelloCS2()
{
Database db = HostApplicationServices.WorkingDatabase;
Document doc = Application.DocumentManager.GetDocument(db);
ZwSoft.ZwCAD.EditorInput.Editor ed = doc.Editor;
var Paths = new List
{
@"C:\test1.dwg",
@"C:\test3.dwg",
@"C:\test2.dwg"
};
foreach (var path in Paths)
{
var materfile = Application.DocumentManager.Open(path, false);
Application.DocumentManager.MdiActiveDocument = materfile;
ResultBuffer rb = new ResultBuffer();
rb.Add(new TypedValue(5005, "zoom"));
rb.Add(new TypedValue(5005, "e"));
int test = zcedCmd(rb.UnmanagedObject);
Application.DocumentManager.MdiActiveDocument.CloseAndDiscard();
}
}
| 英文空间链接 |
|---|
★在使用中望CAD的.NET接口遍历当前打开的所有图纸时,出现阻塞的现象,如何解决?:https://confluence.zwcad.com/pages/viewpage.action?pageId=284952219