WPF BitmapImage 占用资源无法释放、无法删除问题

原文:WPF BitmapImage 占用资源无法释放、无法删除问题

使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。
解决方案:修改加载方式~
        public static BitmapImage GetImage(string imagePath)
        {
            BitmapImage bitmap = new BitmapImage();
            if (File.Exists(imagePath))
            {
                bitmap.BeginInit();
                bitmap.CacheOption = BitmapCacheOption.OnLoad;
                using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath)))
                {
                    bitmap.StreamSource = ms;
                    bitmap.EndInit();
                    bitmap.Freeze();
                }
            }
            return bitmap;
        }
  //使用时直接通过调用此方法获得Image后立马释放掉资源
       ImageBrush berriesBrush = new ImageBrush();   
       berriesBrush.ImageSource = GetImage(path); //path为图片的路径        
       this.Background = berriesBrush;

原文地址:https://www.cnblogs.com/lonelyxmas/p/9434131.html

时间: 2024-10-08 15:10:23

WPF BitmapImage 占用资源无法释放、无法删除问题的相关文章

关于Activity调用Ondestroy()方法之后内存管理器为什么没有释放占用资源

最近在研究activity 执行了finish之后为什么还有很多资源没有释放的问题,关于这个原因的产生,最直接的想法就是activity里面还有很多资源没有手动释放,因为大家知道,activity只不过是一个高度抽象的UI组件,他仅仅只是一个控制界面的功能,包括分发touch时间还有一些列的作用,展示界面的工作是交给DecorView下的所有view以及viewGroup,所以我们可以认为activity持有了所有在他内部绑定的view的引用,但是这些view不仅仅只有activity的引用,还

SQLServer Always On FCI 集群节点同时占用资源及可疑状态修复

FCI 双节点集群,由于晚上集群节点间的网络中断过,两个节点都认为另一个节点宕机,在各节点的集群管理中都看到对方已宕机. 连接到集群IP,提示 msdb 数据库有问题: 发现MSDB数据库 "可疑" msdb 损坏了,mssql 错误日志和代理日志也无就法查询,从windows查看到信息如下: SQL Server 断言: 文件: <xdes.cpp>,行=3785 失败的断言 = 'curr->GetXdesId () == m_xdesId'.此错误可能与时间有关

WPF深入浅出话资源

我们把有用的东西称为资源.“兵马未动,粮草先行”-----程序中的各种数据就是算法的原料和粮草.程序中可以存放数据的地方有很多,可以放在数据库里.可以存储在变量里.介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里.外部文件与程序主体分离,这就有可能丢失或者损坏,编译器允许我们把外部文件编译进程序主体.称为程序主体不可分割的一部分.这就是传统意义上的程序资源(也称为二进制资源). WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源,每个界面元素都可以携带自己的

10 WPF深入浅出话资源

转载:http://blog.csdn.net/fwj380891124 我们把有用的东西称为资源."兵马未动,粮草先行". 程序中的各种数据就是算法的原料和粮草.程序中可以存放数据的地方有很多,可以放在数据库里.可以存储在变量里.介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里.外部文件与程序主体分离,这就有可能丢失或者损坏,编译器允许我们把外部文件编译进程序主体.称为程序主体不可分割的一部分.这就是传统意义上的程序资源(也称为二进制资源). WPF不但支持程

解决切换场景时NGUI图集资源未释放的问题

使用unity3d编辑器,在切换场景的时候,NGUI的图集没有释放造成内存不足游戏闪退的问题. 默认情况下,unity3d切换场景之后会释放不用的内存,即内部会调用Resources.UnloadUnusedAssets从而释放未被引用的资源. 问题是,从编辑器的Profiler查看内存使用情况,发现NGUI的图集并没有被释放. 解决办法: 1.UnloadUnusedAssets 只会在资源没有引用的时候才会有效,包括脚本中静态变量的引用.我们在关闭任何界面的时候,将界面静态变量的引用设置为n

SSH 占用数据库连接不释放问题

SSH框架的项目在访问数据库的时候,访问完成后一直占用链接,不释放,导致过了一段时间后,服务器没挂,就是有访问数据库的连接是时候,一直卡住 解决办法: 1.配置spring对应的hibernate文件: <prop key="hibernate.connection.release_mode">after_statement</prop> 事务提交后自动释放连接 2配置事务 <!--spring 声明式事务管理器 --> <bean id=&q

JAVA中的 try( ){ } ==== 》 try-with-resources 资源自动释放

前一阵子看到一个异常处理的结构,但是一直忘了发博客学习,今天看书又看到了这个异常处理. try(    ){ }catch(){ } 类似于这个结构. 这种结构叫做try-with-resources.自动资源释放. 这种特性从JDK1.7开始存在的. 例如下列代码: private static void customBufferStreamCopy(File source, File target) { InputStream fis = null; OutputStream fos = n

WPF BitmapImage 图片资源正在被另一个进程使用

做WPF项目时遇到不同进程读取同一个路径的图片,提示图片资源正在被另一个进程使用. string path="c:\\1.png"; BitmapImage bp = new BitmapImage(new Uri(path, UriKind.Relative)); 这时候不同进程用bp是会报错,异常的根本原因是因为BitmapImage没有Dispose(). 上网查,找到方法http://www.cnblogs.com/leco/archive/2011/02/21/1959781

WPF中的资源简介、DynamicResource与StaticResource的区别(转)

什么叫WPF的资源(Resource)?资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. 也就是说,应用程序中非程序代码的内容,比如点阵图.颜色.字型.动画/影片档以及字符串常量值,可将它们从程序中独立出来,单独包装成"资源(Resource)". 静态资源(Static Resource),动态资源(Dynamic Resources).这两者的区别是:静态资源在第一次编译后即确定