3 Stimmen

Löschen des Hintergrundbildes eines Fensters WPF

Ich habe ein Problem in WPF, wo ein Fenster nicht freigeben, es ist File-Lock auf die Hintergrundbilddatei nach dem Schließen, bevor ein anderer Teil der Anwendung versucht, auf das Bild zu schreiben.

So als ein Beispiel; sagen, ich habe eine WPF-Anwendung, bestehend aus 3 Windows, 1 "Menü" Auswahlfenster und 2 andere. Beide Fenster erstellen eine ImageBrush unter Verwendung einer BitmapImage als die ImageSource (die dieselbe Bild).

Fenster A hat eine Schaltfläche, die, wenn sie gedrückt wird, die verfügbaren Hintergrundbilder durchläuft, indem sie sie jeweils über die als Original verwendete Datei kopiert ImageSource und die Erstellung eines neuen ImageBrush und die Einstellung der Window.Background auf den neuen Pinsel.

Fenster B verwendet einfach die ImageBrush zum Zeichnen der Window.Background .

Wenn Fenster A gestartet, die Hintergründe umgeschaltet, geschlossen und dann Fenster B gestartet wird, ist alles in Ordnung.

Wenn Fenster B gestartet und geschlossen wird, dann Fenster A gestartet wird und im Hintergrund geschaltet wird, stürzt es ab. Der Versuch, die Hintergründe zu wechseln, führt zu einem IOException denn:

"Der Prozess kann nicht auf die Datei ' C:\Backgrounds\Background.png ', weil es von einem anderen Prozess verwendet wird."

Fenster B muss also noch irgendwie daran hängen!? Ich habe versucht, eine GC.Collect(); GC.WaitForPendingFinalizers(); um zu sehen, ob das Problem dadurch behoben wird, aber das ist nicht der Fall.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X