Эмпирическим путем мы пришли к выводу, что если в каком-то из обработчиков ImpliedSelectionChanged происходит не отловленная ошибка, то автокад отписывается от ВСЕХ обработчиков событий. Предположительно конечно )Вполне возможно. Скорее всего разрушается (обнуляется) таблица обработчиков.
Конечно коллега со временем найдет проблему и все начнет работать, но вопрос совсем в другом - как в рамках своего плагина решать такую проблему? В данном случае разработчик плагина рядом, но что делать когда такая-же ситуация будет происходить с другими сторонними плагинами?Ничего с этим ты не поделаешь.
Ничего с этим ты не поделаешь.Звучит не оптимистично (
Почему другие обработчики не перестают работать? Documents_DocumentActivated продолжает работатьЭто события совершенно разного уровня. Одно - это событие уровня приложения, второе - это событие редактора (хотя завуалировано как будто это событие документа).
это событие редактора (хотя завуалировано как будто это событие документа)На интересную мысль подтолкнули - а если попробовать использовать события Editor.SelectionAdded и Editor.SelectionRemoved?
А может периодически переподписываться на ImpliedSelectionChanged. 8)И в какой-же момент это делать?
А может периодически переподписываться на ImpliedSelectionChanged. 8)1. Должен быть баланс подписок/отписок.
Отписаться-подписаться, это же гарантирует одну подписку.Ещё раз спрошу - когда это делать?Код - C# [Выбрать]
e.Document.ImpliedSelectionChanged -= Document_ImpliedSelectionChanged; e.Document.ImpliedSelectionChanged += Document_ImpliedSelectionChanged;
Например по таймеруНу так себе идейка - крутить таймер в автокаде =)
Эмпирическим путем мы пришли к выводу, что если в каком-то из обработчиков ImpliedSelectionChanged происходит не отловленная ошибка, то автокад отписывается от ВСЕХ обработчиков событий. Предположительно конечно )Сталкивался с таким, только у меня были события базы данных. Происходит ошибка в обработчике - события перестают работать, соответственно, приложение начинает работать неадекватно. Причём, что неприятно, пользователь это может заметить далеко не сразу.
А может периодически переподписываться на ImpliedSelectionChanged.Есть предположение, что не поможет. Надо проверять.
Есть предположение, что не поможет. Надо проверять.Моя интуиция подсказывает это же. Там ломается что-то глубинное, что на уровне подписаться/отписаться уже не сработает. Впрочем возможно зависит от того, какое исключение происходит. Например, возможен вариант, что создаются наборы и не удаляются, а это ограниченный ресурс в AutoCAD (не может их быть больше 128).