Всем привет. С коллегой столкнулись с уникальной проблемой. Коллега тоже тут находится, так что поучаствует в дискуссии.
Имеем два больших плагина. Оба грузятся автоматически. В моём плагине есть такое место:
private void Documents_DocumentActivated(object sender, DocumentCollectionEventArgs e)
{
if (e.Document != null)
{
e.Document.ImpliedSelectionChanged -= Document_ImpliedSelectionChanged;
e.Document.ImpliedSelectionChanged += Document_ImpliedSelectionChanged;
}
}
private void Documents_DocumentCreated(object sender, DocumentCollectionEventArgs e)
{
if (e.Document != null)
{
e.Document.ImpliedSelectionChanged -= Document_ImpliedSelectionChanged;
e.Document.ImpliedSelectionChanged += Document_ImpliedSelectionChanged;
}
}
private void Document_ImpliedSelectionChanged(object sender, EventArgs e)
{
ShowPropertiesControlsBySelection();
}
Все просто - я подписываюсь на событие ImpliedSelectionChanged и для "своих" объектов отображаю свойства в своей палитре.
На рабочем компе у меня обработка события ImpliedSelectionChanged вообще не происходит. Как будто я и не подписывался. Но, если я отключаю из автозагрузки плагины коллеги, то у меня все нормально работает.
Эмпирическим путем мы пришли к выводу, что если в каком-то из обработчиков ImpliedSelectionChanged происходит не отловленная ошибка, то автокад отписывается от ВСЕХ обработчиков событий. Предположительно конечно )
Конечно коллега со временем найдет проблему и все начнет работать, но вопрос совсем в другом - как в рамках своего плагина решать такую проблему? В данном случае разработчик плагина рядом, но что делать когда такая-же ситуация будет происходить с другими сторонними плагинами?