在进行C# WPF编程时遇到异常:“System.InvalidOperationException:“调用线程无法访问此对象,因为另一个线程拥有该对象。”
查找资料后才知道WPF规定非UI线程无法调用UI的方法。
解决办法:在XXX.xmal.cs UI方法中使用Dispatcher,实现代码如下:
1.同步调用Invoke
this.Dispatcher.Invoke(
new Action(
delegate
{
//UI操作方法
TFColorBurshsArray[i].Color = Color.FromArgb(255, 255, 255, 255); //白色
TFSatusArray[i].Value = false;
}
)
);
2.异步调用BeginInvoke
this.Dispatcher.BeginInvoke(
new Action(
delegate
{
//UI方法
TFColorBurshsArray[i].Color = Color.FromArgb(255, 255, 255, 255); //白色
TFSatusArray[i].Value = false;
}
)
);
具体原因后面有空再研究