WPF BitMapImage 占用删除问题,更换头像问题

WPF 图片删除不了?头像文件明明已经变了界面还是老样子?

最近碰到一个奇怪的问题,就是做更换头像的任务时,需要删除原来的头像。

这时候就需要用到缓存方式加载头像了具体形式如下():


BitmapImage bitMap = new BitmapImage();
        if (File.Exists(strFilePath) == true)
        {

bitMap.CacheOption = BitmapCacheOption.OnLoad;

bitMap.BeginInit();
                bitMap.UriSource = new Uri(strFilePath, UriKind.RelativeOrAbsolute);
               bitMap.EndInit();

        }


这个样子看是解决了问题。但是仍然带来了一个更为紧迫的问题。

就是你在删除原来头像,新存同名的新头像时,再去加载新头像

你就会发现头像还是原来的头像。


如果 StreamSource 和 UriSource 均设置,则忽略 StreamSource 值。
如果要在创建 BitmapImage 后关闭流,请将 CacheOption 属性设置为 BitmapCacheOption.OnLoad。 

缓存选项保留对流的访问,直至需要位图并且垃圾回收器执行清理为止。


这个时候代码应当是这样的:
BitmapImage bitMap = new BitmapImage();
if (File.Exists(strFilePath) == true)
{
     //bitMap.UriSource = new Uri(strFilePath, UriKind.RelativeOrAbsolute);
     bitMap.StreamSource = new MemoryStream(File.ReadAllBytes(strFilePath));
     bitMap.EndInit();
     bitMap.Freeze();            

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值