C#WPF项目,如何避免InvalidOperationException?

时间:2010-02-25 16:40:22

标签: c# wpf

我们有一个WPF项目。我收到以下错误:

InvalidOperationException was unhandled
The calling thread cannot access this object because a different thread owns it.

我尝试从我创建的工作线程中获取TextBox的值。

如何避免这种情况。我能够通过使用delegate回调和Invoked()方法在另一个Form项目中避免这种情况,但不知怎的,它在这个WPF项目中不起作用。

任何简单的示例代码?感谢,

2 个答案:

答案 0 :(得分:5)

您需要使用Dispatcher来处理此问题。您现在需要使用Dispatcher.InvokeDispatcher.BeginInvoke将您的回调编组回UI线程,而不是像在Windows窗体中那样使用Control.Invoke。

答案 1 :(得分:4)

如何处理以下内容:

        if (!Dispatcher.CheckAccess()) 
        {
            Dispatcher.BeginInvoke(DispatcherPriority.Normal,
            (MyDelegate)delegate
            {
                // Get value
            });
        } 
        else 
        { 
            // Get value
        }