2011-09-17 32 views
1
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

[BitmapImage in WPF does lock file]可能重複(http://stackoverflow.com/questions/6430299/bitmapimage-in-wpf-does-lock-file) – BrokenGlass

回答

3

您的BitmapImage對象將文件鎖定。

只是一個小的觀察,請使用using statement這樣的:

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

否則你可能會遇到的情況,您的文件將繼續使用(如果調用關閉之前會發生異常()方法

相關問題