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();
}