C # WPF проект, как избежать InvalidOperationException? - PullRequest
2 голосов
/ 25 февраля 2010

У нас есть проект WPF. Я получил следующую ошибку:

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

Я пытаюсь получить значение из TextBox из созданного мной рабочего потока.

Как этого избежать. Мне удалось избежать этого в другом проекте Form, используя delegate callback и Invoked() метод, но почему-то он не работает в этом проекте WPF.

любой простой пример кода? спасибо,

Ответы [ 2 ]

5 голосов
/ 25 февраля 2010

Вам нужно использовать Диспетчер, чтобы справиться с этим. Вместо использования Control.Invoke, как в Windows Forms, теперь вам нужно использовать Dispatcher.Invoke или Dispatcher.BeginInvoke для перенаправления вашего вызова обратно в поток пользовательского интерфейса.

4 голосов
/ 25 февраля 2010

Как насчет чего-то вроде:

        if (!Dispatcher.CheckAccess()) 
        {
            Dispatcher.BeginInvoke(DispatcherPriority.Normal,
            (MyDelegate)delegate
            {
                // Get value
            });
        } 
        else 
        { 
            // Get value
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...