您好我正在尝试从另一个类更新我的WPF GUI中的标签,这个类不是使用此代码的GUI:
System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(new Action(() =>
{
((MainWindow)System.Windows.Application.Current.MainWindow)
.lblError.Content = exception.Message;
}));
但有时会出现以下异常并且更新无效:
抛出异常:' System.InvalidOperationException'在 WindowsBase.dll("调用线程无法访问此对象 因为该对象归另一个线程所有。")
为什么我的代表不工作?有没有一种简单的方法可以做我想做的事情(从另一个类更新我的GUI标签)而不需要太多努力?
答案 0 :(得分:2)
错误消息告诉您确切的错误:您需要使用要更新的UI元素的调度程序。
这不依赖于类,它依赖于当前线程。
要访问正确的线程,请使用您尝试更新的元素的Dispatcher属性:
lblError.Dispatcher.Invoke(new Action(() ...