Like WinForms, WPF design is greatly simplified due to the fact that all user interface elements are accessible only from the streams that created them.
When you try to write a multi-threaded program, this “feature” may seem like a serious limitation. It is not possible to change even the simplest properties of a user interface element directly from a background thread. If so, how can we use background threads in general with WPF?
The answer is that we must transform our user interface actions into a foreground thread where work can be done without conflict. More strictly speaking, we must perform our actions in the context of the thread that created the element we are trying to change.
WPF , :
, , Dispatcher , .