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