IValueConverter阻止删除
本文关键字:删除 IValueConverter | 更新日期: 2023-09-27 18:12:23
我有一个带有图像路径的列表框(ObservableCollection作为源),IValueConverter正在将它们转换为图像缩略图。
当我试图删除这些文件时,我得到错误:
"进程无法访问文件'C:'test.jpg',因为它正在被另一个进程使用。"
public class UriToBitmapConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
BitmapFrame bit = BitmapFrame.Create(new Uri(value.ToString()), BitmapCreateOptions.DelayCreation, BitmapCacheOption.OnDemand);
if (bit.Thumbnail != null)
{
return bit.Thumbnail;
}
else
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 200;
bi.UriSource = new Uri(value.ToString());
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.EndInit();
return bi;
}
}
catch
{
return null;
}
}
如何强制释放镜像或强制删除文件?谢谢你。
您可以使用FileStream
和StreamSource
。
设置CacheOption属性为BitmapCacheOption。如果您希望在BitmapImage创建后关闭流,请OnLoad。默认的OnDemand缓存选项保留对流的访问,直到需要位图,并且清理由垃圾收集器处理。