Ich verwende das MVVM-Muster, um eine WPF-Anwendung zu entwickeln.Zugriff auf ein WPF-Objekt im Dispatcher?
Die App lädt ein Captcha-Bild vom Server und weist es einem Image im WPF-Formular zu, wenn es fertig ist. Ich verwende einen Background für mich das Einfädeln zu tun, wie folgt:
Wenn das Fenster geladen wird, wird die folgende genannt:
BackgroundWorker _bgWorker = new BackgroundWorker();
_bgWorker.DoWork += GetCaptchaImage;
_bgWorker.RunWorkerAsync();
Die GetCaptchaImage Funktion ziemlich einfach ist, das Laden eines Bildes in einem anderen Thread:
BitmapSource _tempBitmap = GetCaptchaFromServer();
ich muss wissen, wie die Dispatcher an Invoke diese Image zu meinem Fenster der Bildquelle zuzuweisen, Zeit rufe ich die Dispatcher nach dem _tempBitmap Laden wie folgt:
Application.Current.Dispatcher.Invoke(
new Action(() => CaptchaBitmap = _tempBitmap));
Wo CaptchaBitmap meine Bildquelle datengebundene wird.
Wenn ich dies tue, wird jedoch eine InvalidOperationException ausgelöst, und jeder Verweis auf _tempBitmap gibt einen Fehler im Thread GUI zurück. Ich weiß es, weil ich es vom Dispatcher GUI-Thread zugreift, wenn es in einem BackgroundWorker-Thread erstellt wurde, aber wie komme ich um es herum?
Hilfe wäre sehr dankbar! :)
Ich habe meine Haare für die letzte Stunde über dieses Problem ausreißen. Tausend Dank! –