长事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长事务相关的知识,希望对你有一定的参考价值。

技术分享

 

static void zffObjectARX_MyCommand14(void)
{
// Add your code for command zffObjectARX._MyCommand14 here
ACHAR* fileName;
AcDbDatabase* pDb;
AcDbObjectId transId;
struct resbuf* filename;
filename=acutNewRb(RTSTR);
acedGetFileD(_T("请选择要检出的图"),NULL,_T("dwg"),0,filename);
pDb=new AcDbDatabase(Adesk::kFalse);
fileName=filename->resval.rstring;
pDb->readDwgFile(fileName);

AcDbBlockTable *pBlk=NULL;
AcDbBlockTableRecord *pBlkRcd=NULL;
pDb->getSymbolTable(pBlk,AcDb::kForRead);
pBlk->getAt(ACDB_MODEL_SPACE,pBlkRcd,AcDb::kForRead);
pBlk->close();
AcDbObjectIdArray objIds;
AcDbBlockTableRecordIterator* it=NULL;
pBlkRcd->newIterator(it);
pBlkRcd->close();
AcDbEntity* pEnt=NULL;
for (it->start();!it->done();it->step())
{
it->getEntity(pEnt,AcDb::kForRead);
if (pEnt->isKindOf(AcDbCircle::desc()))
{
objIds.append(pEnt->objectId());
}
}
pEnt->close();
delete it;

AcDbBlockTable* pBlkCur=NULL;
AcDbBlockTableRecord* pBlkRcdCur=NULL;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkCur,AcDb::kForRead);
pBlkCur->getAt(ACDB_MODEL_SPACE,pBlkRcdCur,AcDb::kForWrite);
pBlkCur->close();
AcDbObjectId objIdCur=pBlkRcdCur->objectId();
pBlkRcdCur->close();

AcDbIdMapping p;
acapLongTransactionManagerPtr()->checkOut(transId,objIds,objIdCur,p);
//AcDbObject* pObj=NULL;
AcDbLongTransaction* pLongTrans;
if (acdbOpenObject(pLongTrans,transId,AcDb::kForWrite)==Acad::eOk)
{
//AcDbLongTransaction* pLongTrans=AcDbLongTransaction::cast(pObj);

AcDbLongTransWorkSetIterator* pItor=NULL;
pLongTrans->newWorkSetIterator(pItor);
int index;
acedGetInt(_T("\\n输入要改变的颜色值:"),&index);
for (pItor->start();!pItor->done();pItor->step())
{
AcDbEntity* pEnt1=NULL;
acdbOpenObject(pEnt1,pItor->objectId(),AcDb::kForWrite);
pEnt1->setColorIndex(index);
pEnt1->close();
}

delete pItor;
ACHAR str[20]={0};
acedGetString(0,_T("\\n观察实体的改变,按回车结束!"),str);
pLongTrans->close();
}

acapLongTransactionManagerPtr()->checkIn(transId,p);
pDb->saveAs(fileName);
acutRelRb(filename);
delete pDb;
pDb=NULL;

}







































































以上是关于长事务的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot - 优雅的处理长事务

ogg-01027(长事务)

监控MySQL长事务脚本

为什么要避免大事务以及大事务如何解决?

长事务

又一批长事务,P0故障谁来背锅?