另一个进程正在使用的文件

时间:2011-09-17 19:54:24

标签: c# wpf c#-4.0

private void ButtonCustomarinfoEditClick(object sender, System.Windows.RoutedEventArgs e)
    {
      ByteToImage(fileName,bytesOfImage,fileSize);
    }   

private ImageSource ByteToImage(string fileName, byte[] bytesOfImage, int fileSize)
    {
        FileStream imageFilestream = new FileStream(fileName, FileMode.Create, FileAccess.Write);
        imageFilestream.Write(bytesOfImage, 0, fileSize);
        imageFilestream.Flush();
        imageFilestream.Close();
        imageFilestream.Dispose();
        BitmapImage myBitmapImage = new BitmapImage();
        myBitmapImage.BeginInit();
        myBitmapImage.UriSource = new Uri(fileName);
        myBitmapImage.DecodePixelWidth = 200;
        myBitmapImage.EndInit();
        return myBitmapImage;
    }

当我第一次点击ButtonCustomarinfoEdit然后它工作正常。但是,当我第二次点击时,它会抛出此异常

抓住:“进程无法访问文件'C:\ 20.jpg',因为它正被另一个进程使用。” (System.IO.IOException)
异常消息=“进程无法访问文件'C:\ 20.jpg',因为它正被另一个进程使用。”,Exception Type =“System.IO.IOException”

1 个答案:

答案 0 :(得分:3)

您的BitmapImage对象会锁定文件。

只是一个小小的观察,请使用这样的using statement

using(FileStream imageFilestream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { 
        imageFilestream.Write(bytesOfImage, 0, fileSize); 
}

否则您可能会遇到文件将继续使用的情况(如果在调用Close()方法之前发生异常。