在自定义实体的transformBy函数中,使用事务abortTransaction,出现错误

作者: admin 分类: C++,CAD,ObjectARX 发布时间: 2019-12-09 14:07

如题,一般函数中使用事务的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(),自己写类,操作前备份,利用使用事务手动回滚,回滚操作一般情况下不会用到。
是不是还有其他更改的办法?如有更好的办法,请指点。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

标签云