ObjectARX, AutoCAD. Среда программирования библиотеки C++



         

Немедленная и задержанная передача событий - часть 2


Вы можете использовать следующие функции, чтобы проверить, что совершающийся процесс закончен прежде, чем Вы открываете объект для записи:

 AcDbObjectReactor::objectClosed(AcDbObjectId ObjId);

 AcTransactionReactor::transactionEnded(int NumActiveAndSuccessful);

ObjectClosed() уведомление послано, когда объект полностью закрыт и указатель больше не имеет силу. Вы можете открывать объект, снова использующий ID, который пропускают в параметре и работать на этом. Будьте внимательным, чтобы не создать бесконечные циклы уведомления в этой точке.

В transactionEnded() уведомление, Вы можете использовать numActiveTransactions(), чтобы сделать запрос операционного менеджера, чтобы видеть, сколько сделок активны. Если не имеется никаких активных сделок, то сделка закончилась, и все объекты в сделке были совершены.

Иногда Вы могут были должны знать, когда наиболее удаленная сделка заканчивается, и совершающийся процесс начинается. Используйте следующее уведомление для этой цели:

 AcTransactionReactor::endCalledOnOutermostTransaction()

Когда наиболее удаленные операционные концы, совершающийся процесс начинается и close() обратился к каждому объекту. Вы могли бы получать objectClosed() уведомление как часть этого завершения. Однако, вообще лучше всего не действовать немедленно.

Вместо этого, ждите, пока целая сделка не закончена прежде, чем Вы исполняете любые операции на этих объектах.




Содержание  Назад  Вперед