很抱歉问一下看起来是一个相当常见的问题,但我遇到了线程试图访问UI对象而失败的问题,因为“不同的线程拥有它们”。
我已经阅读过,并且有很多关于此的内容,但我一直无法找到任何有助于我的特定内容,而且我对线程和线程太新,无法理解答案并提取我需要的资源来自我找到的资源。
我目前的代码中包含的内容是:
void Sc_OnDataSetFilled()
{
ddlSelectGraph.SelectedIndex = 0;
this.DataContext = App.Sc.PepperOverview;
}
这是一个事件处理程序,在成功填充DataSet
时会在代码中的其他位置触发。完成此操作后,我希望SelectedIndex
ComboBox
的{{1}}更改,这是代码因为属于不同线程的UI元素而跳闸的地方。
当调试器尝试设置页面的ddlSelectGraph
属性时会出现同样的问题,因为我之前谈到的DataContext
也是另一个线程的一部分。
有人可以给我一些白痴证明的建议吗,或者指点我一些好吗?
答案 0 :(得分:2)
this.Dispatcher.Invoke(new Action<object>((context) =>
{
this.DataContext = context; // your implementation goes here
}),
new object[1]
{
"you object" // the object(s) you'd like to pass in
});