另一个进程

时间:2017-03-22 08:36:40

标签: c# .net wpf image stream

我有一个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{}来解决问题,但没有成功。

1 个答案:

答案 0 :(得分:0)

问题可能不在您的代码中,因为锁是由另一个进程引起的。您是否尝试使用文件管理器删除文件,以确定在您的应用程序未运行时它是否仍然处于锁定状态?或者尝试放弃FileStream并使用System.Drawing.Image.FromFile()代替,因为您的ObservableCollection中仍然有文件名,请参阅MSDN