1
我有一个带图像路径的列表框(ObservableCollection作为源),并且IValueConverter将它们转换为图像缩略图。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 fileStream = new FileStream(value.ToString(),FileMode.Open,FileAccess.Read); ... img.StreamSource = fileStream;非常感谢你! – Daniel 2013-05-07 16:09:59
不客气,很高兴它帮助:) – 2013-05-07 16:10:50
事实上,只是案例图像的第一部分工作已经有一个缩略图,但第二部分没有,现在没有图像。当我休息时,我可以看到:'(img.StreamSource).ReadTimeout'在部件img.StreamSource = fileStream上抛出了一个类型为'System.InvalidOperationException'的异常。 – Daniel 2013-05-07 16:21:46