我们有一个WPF项目。我收到以下错误:
InvalidOperationException was unhandled
The calling thread cannot access this object because a different thread owns it.
我尝试从我创建的工作线程中获取TextBox的值。
如何避免这种情况。我能够通过使用delegate
回调和Invoked()
方法在另一个Form项目中避免这种情况,但不知怎的,它在这个WPF项目中不起作用。
任何简单的示例代码?感谢,
答案 0 :(得分:5)
您需要使用Dispatcher来处理此问题。您现在需要使用Dispatcher.Invoke或Dispatcher.BeginInvoke将您的回调编组回UI线程,而不是像在Windows窗体中那样使用Control.Invoke。
答案 1 :(得分:4)
如何处理以下内容:
if (!Dispatcher.CheckAccess())
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(MyDelegate)delegate
{
// Get value
});
}
else
{
// Get value
}