Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Updating bound properties from a background thread

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?

like image 811
user981225 Avatar asked Sep 05 '25 03:09

user981225


2 Answers

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.

like image 85
Sean U Avatar answered Sep 07 '25 20:09

Sean U


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).

like image 27
Tigran Avatar answered Sep 07 '25 21:09

Tigran