Teigha eNotOpenForRead
嗨,我目前正在为bricscad v16翻译autocad插件,现在访问DBObject属性时遇到问题。方法事务,GetObject 返回一个对象,但在打印 .handle 时会出现错误 eNotOpenForRead。在autocad中,它工作正常。我不知道,怎么了。im using Bricsys SDK v15.Document document = Bricscad.ApplicationServices.Application.DocumentManager.MdiActiveDocument;。数据库数据库 = 文档,数据库;。
DBObject autoCadDatabaseObject = null;。
使用 (事务事务 = 数据库,TransactionManager.StartTransaction())。
{。
使用 (DocumentLock documentLock = document,LockDocument())。
{。
autoCadDatabaseObject = transaction,GetObject(pObjectId, OpenMode.ForRead);。
交易,Commit();。
if (autoCadDatabaseObject == null)。
{。
记录,Debug(“object is null”);。
}else{。
记录,Debug(“object is not null: ” + autoCadDatabaseObject.GetType().ToString());工作正常。
记录,Debug(“the handle: ” + autoCadDatabaseObject.Handle.ToString());Teigha.Runtime.Exception: eNotOpenForRead at Teigha.DatabaseServices.DBObject.get_Handle()。
}。
}。
}。
。
**** Hidden Message ***** 在我看来,“transaction.Commit();”将是事务“使用”块中的最后一个代码字符串。 非常感谢你的回答。这使我更进一步
但为什么只能在事务中访问属性
我有一个“GetAutoAddBobObjectByObjectId”方法,它在autocad中运行良好
我现在真的需要重构代码吗? 如果您通过事务机制获取对象,那么您必须在事务范围内处理它,然后才能访问或提交事务。但是您可以在没有事务或通过事务仿真的情况下获取对象。
您可以在此处阅读有关它的一些信息(有俄文文本,但您可以阅读源sode):
http://bushman-andrey.blogspot.ru/2013/01/database-autocad.html
http://bushman-andrey.blogspot.ru/2014/09/blog-post.html 是否pObjectId.Handle.ToString();打印没有任何事务?(可能仍然需要文档锁)
因此,在我看来,在这种情况下,文档锁定是不必要的。 翻译错误代码(429):请求 QPS 超过限制。 翻译错误代码(429):请求 QPS 超过限制。
我的生活朋友的故事,谢谢你的笑声! 翻译错误代码(429):请求 QPS 超过限制。
页:
[1]