Когда пользователь назначает цвет/слой в обычной панели свойств, то Автокад непрерывно модифицирует выбранные объекты, присваивая слой из-под курсора мыши. Идут события Database_ObjectModified, активируется моя программа (чтоб показать свойства в другой самодельной панели) и (ОПА!) панелька со списком слоев закрывается, назначается старый слой. Приехали. Пользователь не может поменять цвет/слой.
Выяснил, что схлопывание вызывает Application.DoEvents(). Убрал его. Теперь схлопывается на открытие(!) транзакции. Точнее само схлопывание я не могу видеть в пошаговом режиме отладки, но ловлю новое событие модификации и там уже у объекта старый слой.
Читаю данные не сразу в ObjectModified, а позже из AcadApp_Idle. Но это не помогает. Idle вызывается мгновенно после ObjectModified, пользователь еще не кликнул на нужном слое.
Добавил задержку чтения на полсекунды. Иногда успеваю кликнуть слой и тогда все ОК. Но чуть притормозил и список схлопывается
Вопрос в том как проигнорировать именно такие "временные" модификации объектов? Или может есть какой-то особенный способ читать чертеж пока открыт этот список слоев?
Тут видео
https://www.dropbox.com/s/cobieyazw67xppd/ScreenRecorderProject1.mp4?dl=0