How to access c# WPF control in thread safe way?
You simply want to use the Dispatcher.Invoke
method (or the asynchronous equivalent Dispatcher.BeginInvoke
), which will marshal the call to the main WPF UI thread.
The DependencyObject
class contains a Dispatcher
property, which means all controls and other objects which inherit from this class also provide this property, in a way similar to WinForms. In addition, the Application
object provides access to the dispatcher.
An example usage might be the following (in code-behind of a Window
/UserControl
):
this.Dispatcher.Invoke((Action)(() => { ... }));