файл используется другим процессом - PullRequest
1 голос
/ 17 сентября 2011
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;
    }

Когда я нажимаю кнопку ButtonCustomarinfo и редактирую первый раз, все работает нормально.Но когда я нажимаю второй раз, он выдает это исключение

. Поймано: «Процесс не может получить доступ к файлу« C: \ 20.jpg », потому что он используется другим процессом».(System.IO.IOException)
Сообщение об исключении = "Процесс не может получить доступ к файлу 'C: \ 20.jpg', поскольку он используется другим процессом.", Тип исключения = "System.IO.IOException"

1 Ответ

3 голосов
/ 18 сентября 2011

Ваш объект BitmapImage сохраняет файл заблокированным.

Просто небольшое замечание, используйте using выражение , например:

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

, иначе вы можетестолкнуться с ситуациями, когда ваш файл останется в использовании (если перед вызовом метода Close () произойдет исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...