【问题标题】:C# - WPF how to unreference a BitmapImage so I can delete the source file?C# - WPF 如何取消引用 BitmapImage 以便我可以删除源文件?
【发布时间】:2011-10-29 00:14:56
【问题描述】:

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

在 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,那么原始图像仍然被锁定,我无法删除它。即使我稍后再试,它仍然被锁定。有什么想法可以释放它吗?

【问题讨论】:

    标签: c# wpf image


    【解决方案1】:
    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;
    

    【讨论】:

      【解决方案2】:

      查看this article。您遇到的 WPF 图像有一些奇怪的行为。解决方案是自己读取字节,然后根据它们创建图像,因为如果让框架处理它,文件将保持锁定状态。

      【讨论】:

      • 看起来已经解决了,谢谢!多么奇怪的解决方案,但肯定是可行的。
      猜你喜欢
      • 1970-01-01
      • 2015-09-17
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多