I have a WPF control that is bound to properties in my ViewModel. To my surprise (as this doesn't seem like a well-advertised feature of WPF), there seem to be no issues with changing the bound properties from a background thread. My UI updates with no exceptions. Why is this? Are there any performance issues with updating a bound property from a background thread, or any other limitations?
WPF automatically ensures that bindings are updated on the main thread.
There's no performance hit. If anything it's better to do the property updates on the background thread. Dispatching updates to the main thread would increase the amount of work being done there. You would be updating both the View and the ViewModel, rather than just the View. The difference should normally be negligible, but if a lot of updates are happening rapidly then it might cause the UI's responsiveness to degrade more quickly.
This is because WPF
takes care about marshalling the binded data to UI thread.
This works only for scalar data, as much as I know. For the collections, you have to take care about correct managing it between non UI and UI threads.
There is no notable overhead, as finally it should do the same thing you would do in multithreading (may be in slightly more optimized way).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With