【发布时间】:2009-02-06 00:04:29
【问题描述】:
我有一些 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 负责调用不同的线程,所以这个错误让我有点困惑。
谢谢!
【问题讨论】:
-
您确定这是来自用户控件的 Dispatcher 对象吗?错误发生在哪一行?
-
Patrick,我正在使用用户控件的调度程序。 Dispatcher 执行 ConnectionStatusTxt.Content = value; 时出现错误;
-
采用哪个代码路径-您说当 Dispatcher 执行 ConnectionStatusTxt.Content = value 时发生错误,但您的意思是直接调用 if 语句的真实路径还是委托假路径?
-
在错误的路径上,很抱歉造成混乱
标签: c# wpf multithreading dispatcher