Доменный объект «Изменен», событие запускается несколько раз? - PullRequest
1 голос
/ 14 февраля 2012

У меня есть настраиваемое окно для отображения различных объектов из дерева ввода.После проверки объекта в дереве ввода и отображения в окне я подписываюсь на событие «Изменено» объекта.Я абсолютно уверен, что не подписывался на мероприятие более одного раза.Проблема, которую я вижу, состоит в том, что когда я делаю изменения в объекте, такие как цвет, событие запускается 3 раза.

псевдокод:

- Draw a borehole in a custom window<br />
- borehole.Changed += borehole_Changed<br />
- Change the color of the borehole<br />
- See event fire 3 times (I just added debug prints)

Редактировать:Я заметил, что простое открытие настроек и нажатие кнопки «ОК» без каких-либо изменений приводит к запуску трех событий.Так что теперь я предполагаю, что это на самом деле не имеет ничего общего с изменением цвета.

Я также пытался проверить свойство DomainObjectChangeEventArgs PropertyNames, но оно всегда пустое.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Похоже, что событие Changed постепенно прекращается в пользу ColorInfo.ColorChanged, ImageInfo.ImageChanged и т. Д. Фактически, событие Changed больше не запускается с 2011 года для изменений цвета.Оказывается, что были и другие причины, которые вызвали событие.

В любом случае, если говорить коротко, не используйте событие Changed.

0 голосов
/ 14 февраля 2012

Я тоже получаю одно событие. Я использую 2011.1 и событие ColorChanged из ColorInfo для скважины.

В других случаях я вижу несколько событий, но они происходят, когда измененные данные запускают изменения других данных, относящихся к скважине. Например, изменение базы данных приведет к большому количеству базовых вычислений и к множеству триггеров событий.

0 голосов
/ 14 февраля 2012

Я не могу подтвердить это поведение, я получаю только одно событие. Скажите, пожалуйста, какую версию вы используете? И - вы меняете цвет через код или через страницу настроек?

В моем случае я получил один обратный вызов в обоих случаях.

Спасибо

...