尝试从另一个类更新 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 标签(?

尝试从另一个类更新 wpf gui 元素

错误消息会告诉您到底出了什么问题:您需要使用要更新的 UI 元素的调度程序。

这不依赖于类,它依赖于当前线程。

要访问正确的线程,请使用您尝试更新的元素的调度程序属性:

lblError.Dispatcher.Invoke(new Action(() ...

另请参阅如何在 C# 中从另一个线程更新 GUI?