Подтвердить что ты не робот

Безопасность WPF по защите данных?

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

если я вызываю это из другого потока, кроме потока GUI, как будет выглядеть wpf?

и будет ли он уверен, что он получает значение свойства из памяти, а не кэш-памяти процессора?

более или менее im спрашивает, блокирует ли wpf() объект, содержащий свойство...

4b9b3361

Ответ 1

Изменения значения, инициированные INotifyPropertyChanged , автоматически сортируются на диспетчере. (http://blog.lab49.com/archives/1166)

Огоньте это событие в любом потоке, который вам нравится...


Изменения значения, произведенные с помощью INotifyCollectionChanged , на диспетчере НЕ надежно сортируются. (http://csharplive.wordpress.com/2008/09/11/wpf-data-binding-observablecollection-cross-thread-binding-support/)

Если вам нужно обновить наблюдаемую коллекцию из другого потока, следуйте советам по этой ссылке

Ответ 2

В дополнение к ответу @Rob Fonseca-Ensor, есть хорошие новости для тех, кому посчастливилось использовать WPF4.5:

WPF позволяет вам получать доступ и изменять коллекции данных в потоках, отличных от тех, которые создали коллекцию. Это позволяет использовать фоновый поток для приема данных из внешнего источника, например базы данных, и отображения данных в потоке пользовательского интерфейса. Используя другой поток для изменения коллекции, ваш пользовательский интерфейс по-прежнему реагирует на взаимодействие с пользователем. (https://msdn.microsoft.com/en-us/library/bb613588(v=vs.110).aspx#xthread_access)

Вот полезное резюме Джонатана Антуана: http://www.jonathanantoine.com/2011/09/24/wpf-4-5-part-7-accessing-collections-on-non-ui-threads/

Ответ 3

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