欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF 依赖属性多线程赋值

程序员文章站 2022-06-08 18:07:12
...

WPF 依赖属性多线程赋值

问题描述

当依赖属性被页面绑定后,子线程对依赖属性赋值时会出现错误:调用线程无法访问此对象,因为另一个线程拥有该对象。

解决方法

使用CheckAccess()判断调用线程是否可以访问此对象,如果不可以,使用Dispatcher的invoke方法。

代码示例

Action act =()=>{ m_ComputerInfo.MacId = macInfo; };
//如果调用线程可以访问此对象,则为 true;否则,为 false。

//m_ComputerInfo继承至DependencyObject
if (m_ComputerInfo.CheckAccess())
{
      act();
}
else
{
      m_ComputerInfo.Dispatcher.Invoke(
      		System.Windows.Threading.DispatcherPriority.Normal,act);
}