我有一些需要从我的后台演示者线程更新的UI代码.所以,我执行以下操作:从我的后台线程,我在UI中设置我的属性:
_ui.ConnectionStatus = "A";
然后,我的设置如下:
public string ConnectionStatus { set { if (Dispatcher.CheckAccess()) ConnectionStatusTxt.Content = value; else { Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => {ConnectionStatusTxt.Content = value;})); } } }
我收到以下错误:
The calling thread cannot access this object because a different thread owns it.
我的理解是Dispatcher
负责调用不同的线程,所以这个错误让我感到困惑.谢谢!
另一个问题:什么类型的价值?这是一个字符串?我可以想象,错误可能是该值实际上是您创建的UIElement(可能是Label?),在这种情况下,异常是指值对象而不是您的用户控件.