Для AcDbObjectReactor события уведомления могут или происходить немедленно или быть задержано на время. Используйте задержку, когда объект закрыт, если Вы работаете на основании " в объект ", или конец наиболее удаленной сделки, если Вы используете операционную модель. Следующие события посылают немедленное уведомление:
cancelled()
Уведомление послано, когда AcDbObject::cancelled()
вызван.
openedForModify()
Уведомление послано перед первым вызовом функции модификации, прежде, чем состояние объекта изменено.
copied()
Уведомление послано, когда объект скопирован.
goodbye()
Уведомление послано, когда объект собирается быть удаленным из памяти.
Немедленные уведомления вызваны в то же самое время как соответствующее событие. Например, когда assertWriteEnabled () вызван первый раз на объекте, openedForModify () уведомление немедленно послано всем реакторам на том объекте.
Следующие события посланы с задержкой:
n modified()
n subObjModified()
n erased()
n modifyUndone()
n modifiedXData()
n unappended()
n reappended()
n graphicsModified()
modified() уведомление о AcDbObjectReactor - пример передавать-разового уведомления. Предположим, что объект открыт, и функция модификации - обратился к этому. Функция модификации вызывает assertWriteEnabled() и все реакторы получают openedForModify() реакция. Последующие функции модификации на объекте не приводят к любому дальнейшему уведомлению. Когда объект наконец закрыт, modified() уведомление послано. Однако, если новичок хотел называть cancel()
на объекте вместо cancelled(), cancel()
уведомление будет послано вместо cancelled() уведомление.
Когда Вы получаете задержанное уведомление типа modified(), один из параметров - указатель на объект. В это время объект находится в состоянии только для чтения. Вы не способны изменить это до конца совершающегося процесса.
При попытке изменять объект прежде, чем совершающийся процесс закончен, есть причины AutoCAD, чтобы прерваться с сообщением об ошибках eWasNotOpenForWrite или eInProcessOfCommitting.