C # - WPF, как разыменовать BitmapImage, чтобы я мог удалить исходный файл? - PullRequest
9 голосов
/ 17 августа 2011

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

В окне 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 ]

13 голосов
/ 17 августа 2011

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

2 голосов
/ 26 июля 2012
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...