Seb*_*ray 16 c# wpf thread-safety
我尝试过使用MSDN中的示例,但它们似乎只适用于Windows窗体.例如,使用.InvokeRequired的方法依赖于窗体控件,但是此方法不适用于WPF控件.Backgound工人方法也抛出InvalidOperationException
-
调用线程无法访问此对象,因为另一个线程拥有它.
那么如何在WPF环境中完成呢?
Nol*_*rin 41
您只想使用Dispatcher.Invoke
方法(或异步等效方法Dispatcher.BeginInvoke
),它将封送对主WPF UI线程的调用.
本DependencyObject
类包含一个Dispatcher
属性,这意味着它从该类继承也提供这种特性,在类似的WinForms方式所有控件和其他对象.此外,该Application
对象提供对调度程序的访问.
一个例子的使用可能是以下(在的代码隐藏Window
/ UserControl
):
this.Dispatcher.Invoke((Action)(() =>
{
...
}));
Run Code Online (Sandbox Code Playgroud)