example databinding bindingcontext wpf multithreading data-binding

bindingcontext - WPF Databinding thread safety?



combobox databinding c# (3)

Bueno, digamos que tengo un objeto al que me uno de datos, implementa INotifyPropertyChanged para decirle a la GUI cuando un valor ha cambiado ...

si desencadenar esto a partir de un hilo diferente que el hilo GUI, ¿cómo se comportaría wpf?

¿y se asegurará de que obtenga el valor de la propiedad de la memoria y no del caché de la CPU?

más o menos estoy preguntando si wpf does lock () en el objeto que contiene la propiedad ...


Además de la respuesta de @Rob Fonseca-Ensor, hay algunas buenas noticias para aquellos que tienen la suerte de usar WPF4.5:

WPF le permite acceder y modificar colecciones de datos en hilos que no sean el que creó la colección. Esto le permite usar un hilo de fondo para recibir datos de una fuente externa, como una base de datos, y mostrar los datos en el hilo de la interfaz de usuario. Al usar otro hilo para modificar la colección, su interfaz de usuario sigue siendo receptiva a la interacción del usuario. ( msdn.microsoft.com/en-us/library/… )

Hay un resumen útil de Jonathan Antoine: http://www.jonathanantoine.com/2011/09/24/wpf-4-5-part-7-accessing-collections-on-non-ui-threads/


En la práctica, parece funcionar como se esperaba y parece ser seguro para subprocesos (no se ha visto nada raro o excepciones como resultado de la actualización en el hilo de fondo). Creo que invoca el hilo de interfaz de usuario cuando es necesario, pero no estoy muy familiarizado con las partes internas.


Los cambios de INotifyPropertyChanged por INotifyPropertyChanged se INotifyPropertyChanged automáticamente en el despachador. ( http://blog.lab49.com/archives/1166 )

Dispara este evento en cualquier hilo que te guste ...

Los cambios de valor disparados por INotifyCollectionChanged NO se clasifican de manera confiable en el despachador. ( http://csharplive.wordpress.com/2008/09/11/wpf-data-binding-observablecollection-cross-thread-binding-support/ )

Si necesita actualizar una colección observable de un hilo diferente, siga los consejos en este enlace