如何以线程安全的方式访问c#WPF控件?

如何以线程安全的方式访问c#WPF控件?,c#,wpf,thread-safety,C#,Wpf,Thread Safety,我尝试过使用MSDN中的示例,但它们似乎只适用于Windows窗体。例如,使用.invokeRequest的方法依赖于windows窗体控件,但是此方法不适用于WPF控件。Backgound worker方法也会抛出一个InvalidOperationException- 调用线程无法访问此文件 对象,因为另一个线程拥有 它 那么,在WPF上下文中如何实现这一点呢?您只需要使用该方法(或异步等效的Dispatcher.BeginInvoke),它将封送对主WPF UI线程的调用 Dependen

我尝试过使用MSDN中的示例,但它们似乎只适用于Windows窗体。例如,使用.invokeRequest的方法依赖于windows窗体控件,但是此方法不适用于WPF控件。Backgound worker方法也会抛出一个
InvalidOperationException
-

调用线程无法访问此文件 对象,因为另一个线程拥有 它


那么,在WPF上下文中如何实现这一点呢?

您只需要使用该方法(或异步等效的
Dispatcher.BeginInvoke
),它将封送对主WPF UI线程的调用

DependencyObject
类包含一个属性,这意味着从该类继承的所有控件和其他对象也以类似于WinForms的方式提供该属性。此外,
应用程序
对象提供对调度程序的访问

示例用法可能如下(在
窗口的代码隐藏中
/
用户控件
):


谢谢,效果很好。在WPF中,当您知道需要做什么时,它实际上比win表单简单得多;-)没问题。是的,WPF确实有一个更好的线程/消息泵模型。
this.Dispatcher.Invoke((Action)(() =>
    {
        ...
    }));