У меня есть приложение, которое изменяет связанный с данными объект в фоновом потоке, чтобы избежать длительных операций в потоке пользовательского интерфейса.
Система привязки данных в маршалах WPF автоматически изменяется с события INotifyPropertyChanged.PropertyChanged
на поток пользовательского интерфейса, поэтому обычно это не проблема.
Когда я добавляю обработчик события, который вызывает ICommand.CanExecuteChanged
к событию INotifyPropertyChanged.PropertyChanged
, я получаю перекрестную нить InvalidOperationException
.
Должен ли я маршалировать обратно в поток пользовательского интерфейса, когда я поднимаю INotifyPropertyChanged.PropertyChanged
или когда я поднимаю ICommand.CanExecuteChanged
?
Оба варианта имеют свои плюсы и минусы, но в любом случае работают.
Что считается лучшей практикой?
Вот плюсы и минусы каждого, чтобы вы понимали, почему я спрашиваю:
Это всего лишь некоторые из моей головы. Я хотел бы знать, что считается лучшим вариантом и почему. На данный момент я думаю, что сортировка в обработчике - хороший вариант, но он все равно не устраивает меня. Возможно, есть вариант, который я упустил.