Я использую шаблон MVVM для разработки приложения WPF.Как получить доступ к объекту WPF в диспетчере?
Приложение загружает изображение captcha с сервера и назначает его изображению в форме WPF при его готовности. Я использую BackgroundWorker сделать многопоточность для меня следующим образом:
Когда окно загружается, следующий называется:
BackgroundWorker _bgWorker = new BackgroundWorker();
_bgWorker.DoWork += GetCaptchaImage;
_bgWorker.RunWorkerAsync();
Функция GetCaptchaImage довольно просто, загрузка изображения в другом потоке:
BitmapSource _tempBitmap = GetCaptchaFromServer();
Мне нужно знать, как вызвать Dispatcher присвоить этот ImageSource к источнику изображения моего окна, в настоящее время я называю диспетчеру после загрузки _tempBitmap следующим образом:
Application.Current.Dispatcher.Invoke(
new Action(() => CaptchaBitmap = _tempBitmap));
Где CaptchaBitmap находится в мой привязки данных источника изображения.
Однако, когда я делаю это, вызывается InvalidOperationException, и любая ссылка на _tempBitmap возвращает ошибку в потоке графического интерфейса пользователя . Я знаю его, потому что я обращаюсь к нему из диспетчера GUI thread, когда он был создан в потоке BackgroundWorker, но как я обойду его?
Справка была бы принята с благодарностью! :)
Я отрывал свои волосы в течение последнего часа над этой проблемой. Спасибо, кучи! –