C# - WPF, как отсылать ссылку на BitmapImage, чтобы я мог удалить исходный файл?

Это кажется довольно простой проблемой, но я не могу найти способ обойти это.

В окне WPF у меня есть изображение, image_small_pic. В связанном файле C# я установил значение этого, используя этот код:

Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute);
small_image_bmp = new BitmapImage(src);
image_small_pic.Source = small_image_bmp;

Где small_image_bmp - это публичный объект BitmapImage. Но если потом, потом, если я изменю small_image_bmp на другой файл и переназначу image_small_pic.Source, то исходное изображение все еще заблокировано, и я не могу его удалить. Даже если я попробую позже, он все еще заблокирован. Любые мысли, как я могу освободить это?

2 ответа

Решение

Проверьте эту статью. С изображениями WPF вы сталкиваетесь со странным поведением. Решение состоит в том, чтобы самостоятельно прочитать байты, а затем создать на их основе изображение, поскольку, если вы позволите платформе справиться с этим, файл останется заблокированным.

Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute);
var small_image_bmp = new BitmapImage();
small_image_bmp.BeginInit();
small_image_bmp.CacheOption = BitmapCacheOption.OnLoad;
small_image_bmp.UriSource = src;
small_image_bmp.EndInit();

image_small_pic.Source = small_image_bmp;
Другие вопросы по тегам