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