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

       

Границы транзакции


Поскольку Вы, не система, отвечаете за старт, окончание, или транзакции прерывания выполнения, важно знать операционные границы. Операционная граница - время между началом и концом или аварийным прекращением работы транзакции.

Рекомендуется, чтобы Вы ограничили{*заключили*} вашу границу к самой маленькой возможной области{*контексту*}. Например, если Вы запускаете транзакцию в функции, пробуете заканчивать или прервать транзакцию прежде, чем Вы возвращаетесь от той функции, потому что Вы не можете иметь знание транзакции вне функции. Вы не должны следовать за этим правилом, если Вы поддерживаете некоторый глобального менеджера для ваших операционных действий, но Вы все еще ответствены за прерывание выполнения или окончание всех транзакций, которые Вы запускаете.

Множественные приложения могут использовать операционное управление для их работы, и операции на объектах совершены{*переданы*} в конце наиболее удаленной транзакции.

Поэтому, граница команды AutoCAD - то, насколько Вы можете протягивать границу ваших транзакций. Когда команда концы, там не должна быть никакие активные транзакции. Если имеются любые активные транзакции (операционный стек не пуст) когда команда концы, AutoCAD прервется. Как исключение, транзакции могут все еще быть активны, когда acedCommand () или прозрачная команда концы, но они должны весь быть решенными, когда основная команда концы и AutoCAD возвращается Приглашению ко вводу команды.

Это - вообще хорошая идея запустить транзакцию, когда одна из ваших функций вызвана как часть команды, зарегистрированной Вами и концом это, когда Вы возвращаетесь от той функции. Вы можете обобщать это к всем командам в AutoCAD, используя AcEditorReactor:: commandWillStart () и AcEditorReactor:: commandEnded () уведомления, но имеются некоторые команды, которые не должны быть проведены. Следующие команды не должны быть проведены:

§

ARX

§         DXFIN

§         INSERT

§         NEW

§         OPEN

§         PURGE

§         QUIT

§         RECOVER

§         REDO

§         SAVE

§         SCRIPT

§         U

§         UNDO

§         XREF



Содержание раздела