编辑器如何立即显示消息& # 65311;
在 for 循环中使用函数 Editor.WriteMessage() 时,消息无法立即显示。所有消息都同时列出,直到CAD命令完成。像这样:
for (int i = 0; i
{
......
编辑..WriteMessage(“\nCalculating {0}...”, tp.pointNo);
}
编辑器类是否有任何方法可以立即显示消息?
**** Hidden Message ***** 您是否在交易中执行此操作?如果是这样,在提交事务之前不会发生任何事情。...只是一个想法。 我想应该是tps。pointNo<br>应该在循环迭代时写入消息<什么是tps<循环中的其余部分是什么样子的?
没有交易
下一个代码相同:
public static void nn()
{
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
for (int i = 0; i < 10000; i++)
{
ed.WriteMessage("\n{0}", i);
}
}
可以显示该消息,直到for循环完成
我想我应该一个接一个地看到从0到9999打印的消息。但是,等了大约一秒钟后,我看到所有的信息都被打印在一起了<也许是因为单线? 尝试在循环中放置一个“睡眠”来减慢它的速度,该循环会很快完成,并且看起来它正在等待完成,尤其是如果您刚刚加载dll,甚至可能会有一点JIT延迟,使其看起来像是在等待。
我tried.But这似乎不起作用......
嗯,它在我的机器上工作,我也尝试了递归以显示另一个选项。有时VS在您运行调试时不会重新编译,请确保您进行完整的构建以确保您使用的是最新版本的代码。我的测试是在Bricscad中完成的,所以那里可能有什么东西,我之前遇到过很多两个之间的奇怪异常。public静态ululeRectest(int count)。
{。
编辑_AcAp.Application.DocumentManager.MdiActiveDocument.Editor。
如果(计数。
{。
ed.WriteMessage("\n{0}", count);。
System.Threading.Thread.Sleep(1000);。
递归(计数+1);。
}。
}。
。
[命令方法("nn")]。
公共静态无效测试()。
{。
递归(1);。
}。
。
[命令方法("nnn")]。
公共静态无效test2()。
{。
编辑_AcAp.Application.DocumentManager.MdiActiveDocument.Editor。
for(int i=1; i。
{。
ed.WriteMessage("\n{0}", i);。
System.Threading.Thread.Sleep(1000);。
}。
}。
。
重新编译并使用了递归方法,仍然无法在AutoCAD2016中工作。
但是在AutoCAD2008中,它工作得非常好。
MickD,谢谢你的帮助。 我刚刚在2016年进行了测试,看起来它也在做同样的事情。
和……一样吗?
页:
[1]
2