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;