Как предотвратить бесконечный l oop при использовании INotifyPropertyChanged? - PullRequest
1 голос
/ 09 мая 2020

C# вопрос.

У меня есть класс, который используется для нескольких экземпляров объектов. Они содержат свойства, и я использую INotifyPropertChanged для уведомления нескольких классов слушателей об изменении свойства. Скажем, класс сетевого менеджера, который устанавливает значение свойства в объекте.

Проблема в том, что объект запускает INotifyPropertyChanged, который затем класс сетевого менеджера принимает как изменение, поэтому он снова меняет свойство. Бесконечный l oop.

Большинство примеров сравнивают значение и останавливают l oop, когда значения совпадают. К сожалению, это означает, что каждому классу-слушателю нужна копия значений всех объектов для сравнения. (Object Sender, String value), который будет включать объект отправителя в настраиваемый EventArgs. Затем объект слушателя может сравнивать Отправителя с самим собой и игнорировать любые инициированные им уведомления.

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

Я тщательно искал это и задал вопрос ранее другим способом. Я пока не нашел ничего, связанного с этим. Кто-то упомянул StackTrace, который я попробую, но меня беспокоит, будет ли он работать с несколькими потоками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...