我有一个WPF应用程序,它连续显示来自ObservableCollection
的图像(包括带有图像路径的字符串)
<Image Source="{Binding ListOfUnsortedImages[0], UpdateSourceTrigger=PropertyChanged}" />
这是包含图像路径的集合:
private ObservableCollection<String> _listOfUnsortedImages = new ObservableCollection<String>();
应用程序显示图像,单击按钮后,应用程序将复制图像,将其从集合中删除并显示下一个图像。
这是按钮的简化逻辑:
Image img;
var currentImage = ListOfUnsortedImages[0];
using (Stream stream = File.OpenRead(currentImage))
{
img = System.Drawing.Image.FromStream(stream);
// Do something with the image
img.Dispose();
stream.Dispose();
}
ListOfUnsortedImages.RemoveAt(0);
File.Delete(currentImage);
最后一行触发IOException:
该进程无法访问文件'filename',因为它正在被使用 通过另一个过程
我尝试使用Dispose()
和/或using{}
来解决问题,但没有成功。
答案 0 :(得分:0)
问题可能不在您的代码中,因为锁是由另一个进程引起的。您是否尝试使用文件管理器删除文件,以确定在您的应用程序未运行时它是否仍然处于锁定状态?或者尝试放弃FileStream并使用System.Drawing.Image.FromFile()
代替,因为您的ObservableCollection中仍然有文件名,请参阅MSDN