У меня возникла проблема с WPF, когда окно не освобождает файловую блокировку в файле фонового изображения после закрытия, прежде чем другая часть приложения попытается записать на изображение.Удаление фонового изображения окна WPF
Так, например, У меня есть приложение WPF, состоящее из 3 окон, 1 "меню" и 2 других. Оба окна создают ImageBrush
, используя BitmapImage
как ImageSource
(то же изображение).
Окно А имеет кнопку, которая при нажатии, циклически доступных фоновых изображений путем копирования их каждый поверх файла, используемого в качестве исходного ImageSource
и создания нового ImageBrush
и установки Window.Background
к новой кисти.
Окно B просто использует ImageBrush
, чтобы нарисовать Window.Background
.
Если окно A запущено, фоны переключаются, закрываются, а затем запускается окно B, все в порядке.
Если окно B запущено, закрыто, затем запускается окно A, а фоновые изображения сбрасываются. Пытаться переключить фон бросает IOException
, потому что:
«Процесс не может получить доступ к файлу« C: \ Backgrounds \ Background.png », потому что он используется другим процессом».
Так что окно B должно все еще держаться за него как-то !? Я попытался сделать GC.Collect(); GC.WaitForPendingFinalizers();
, чтобы убедиться, что это устраняет проблему, но это не так.
Это бриллиант, спасибо вам обоим! – Siyfion