В обработчике события модификации нельзя использовать транзакции.А как, в таком случае, добраться до NamedObjectsDictionaryId без использования GetObject?
Есть эмуляция транзакции (или просто метод ObjectId.Open). Но нужно быть очень осторожным, чтобы не запустить рекурсию.В обработчике события модификации нельзя использовать транзакции.А как, в таком случае, добраться до NamedObjectsDictionaryId без использования GetObject?
Сохранить где-то флажок, что интересующие вас объекты модифицированы. А всю реальную работу перенести в событие OnIdleИдею понял, буду разбираться.
Есть эмуляция транзакции (или просто метод ObjectId.Open). Но нужно быть очень осторожным, чтобы не запустить рекурсию.А использование StartOpenCloseTransaction() ситуацию не улучшит?
А использование StartOpenCloseTransaction() ситуацию не улучшит?Это и есть эмуляция транзакции, о которой я писал выше.
Один из вариантов (подходит для серьезной, долгой обработки):Это событие может происходить немного с задержкой после модификации и визуально может выглядеть как подтормаживание. Но, в отличие от других способов, работает железобетонно.
Сохранить где-то флажок, что интересующие вас объекты модифицированы. А всю реальную работу перенести в событие OnIdle