C#-WPF如何取消对位图图像的引用,以便删除源文件?

C#-WPF如何取消对位图图像的引用,以便删除源文件?,c#,wpf,image,C#,Wpf,Image,这似乎是一个相当简单的问题,但我似乎找不到解决它的方法 在一个WPF窗口中,我有一个图像,图像小图片。在相关的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是公共位图图像对象。但是,如

这似乎是一个相当简单的问题,但我似乎找不到解决它的方法

在一个WPF窗口中,我有一个图像,图像小图片。在相关的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是公共位图图像对象。但是,如果以后,如果我将small\u image\u bmp更改为另一个文件并重新指定image\u small\u pic.Source,那么原始图像仍然被锁定,我无法删除它。即使我稍后再试,它还是锁着的。有什么想法我可以释放这个吗?

看看。你会发现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;