尝试从另一个类更新 wpf gui 元素
本文关键字:wpf gui 元素 更新 另一个 | 更新日期: 2023-09-27 18:34:35
嗨,我正在尝试从另一个类更新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 标签(?
错误消息会告诉您到底出了什么问题:您需要使用要更新的 UI 元素的调度程序。
这不依赖于类,它依赖于当前线程。
要访问正确的线程,请使用您尝试更新的元素的调度程序属性:
lblError.Dispatcher.Invoke(new Action(() ...
另请参阅如何在 C# 中从另一个线程更新 GUI?