![]() |
【转帖】请问关于elockviolation
请问关于elockviolation
请问关于elockviolation 当pent->upgradeopen();时返回 elockviolation时应该怎么办? 对elockviolation错误应该如何对待? change your life style. 我觉得这个还是要根据你的上下文环境而定。你是在什么情况下出现上面的错误的? 回复 以前明明是这样用可以的, acdbentity *pentity; acdbopenacdbentity(pentity, objid, acdb::kforread); ... acdbline *pline = (acdbline*)pent; pline->upgradeopen(); pline->erase(); pline->close(); 这句pline->upgradeopen();的返回值以前没有考虑过elockviolation, 现在我对处理后的图形(从其它dwg clone到当前文档)做同样步骤的操作, pline->upgradeopen();返回值就为elockviolation了. change your life style. 回复 我是在dockbar上通过button调用命令的, 我查了一下,可能需要acaxdoclock 来lock文档. change your life style. 回复 知道了, 如果是dockcontrobar或modeless窗体, 在调用acdbopenobject, acdbopenacdbentity等函数时, 要在处理前 acdocmanager->lockdocument(curdoc(),acap::kwrite,null,null,true); 调用结束后 acdocmanager->unlockdocument(curdoc()); change your life style. 太棒了,困扰了我两天的问题终于解决了。多谢楼上的回复。我是在无模式对话框中用了wblock函数,结果也是遇到了elockviolation的错误,我都快绝望了,终于在这找到了解决办法。 对于锁定文档,arx中是这样解释的,当你要修改一个不是当前文档的数据库时,或者你要阻止别的执行文本来修改该数据库时,你需要锁定文档。如果是以只读方式打开某个对象是不用锁定文档的,但是以写方式打开对象时,最好锁定文档。 |
| 所有的时间均为北京时间。 现在的时间是 05:42 AM. |