找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 602|回复: 1

[求助] [已解决]在自定义实体的transformBy函数中,使用事务abortTransaction,出现错误

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2019-12-6 09:16:57 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 yujishatan 于 2019-12-9 08:44 编辑

如题,一般函数中使用事务的abortTransaction可以正常回滚。但是在自定义实体的transformBy,moveGripPointAt成员函数用,使用abortTransaction,出现Unhandled Access Violation Reading 0x0000 Exception at 557dd3h错误。
使用endTransaction正常提交事务。
代码如下:
Acad::ErrorStatus CustomObj::moveGripPointsAt(const AcDbIntArray& indices,    const AcGeVector3d& offset){
    assertWriteEnabled();
    if (this->database() == NULL){
        return Acad::eOk;
    }
    else{
        actrTransactionManager->startTransaction();
        actrTransactionManager->abortTransaction();
        return Acad::eOk;
    }
}   

请高手指点指点。感谢。

可能的原因:应该是moveGripPointsAt中的对象,即将close,调用abortTransaction会,立即close()。moveGripPointsAt后面对该对象,应该还有其他操作,造成错误。
已解决:不用abortTransaction(),自己写类,操作前备份,利用使用事务手动回滚,回滚操作一般情况下不会用到。
是不是还有其他更改的办法?如有更好的办法,请指点。

注:知道原因、方法的兄弟,你可以回复也可以不回复。大半夜,留个表情,累不累。


来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 4365个

财富等级: 富可敌国

发表于 2019-12-7 00:10:13 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-4 16:19 , Processed in 1.694018 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表