c # ASP.NET Как удалить файл, который «используется» другим процессом? - PullRequest
1 голос
/ 23 сентября 2010

Я загружаю файл:

System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);

Теперь я хочу сохранить изображение:

img.Save(SavePath);

Это работает .. Если только FilePath == SavePath, то он решает дать мне ошибку:

System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

Итак, я попытался удалить файл сразу после его открытия:

System.Drawing.Image img = System.Drawing.Image.FromFile(FilePath);
File.Delete(FilePath);

И это дает мне ошибку:

System.IO.IOException: The process cannot access the file 'filename.jpg' because it is being used by another process.

Итак ... Как я могу изменить существующий файл, который «используется», когда он никем не используется?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Изображение останется заблокированным до его удаления ( См. Здесь ).

Файл остается заблокированным, пока изображение не будет удалено.

Вам придется сохранить изображение в другом месте (или скопировать его содержимое), а затем утилизировать открытое изображение.изображение с помощью предложения using.

Пример:

using(Image image1 = Image.FromFile("c:\\test.jpg"))
{
    image1.Save("c:\\test2.jpg");
}

System.IO.File.Delete("c:\\test.jpg");
System.IO.File.Move("c:\\test2.jpg", "c:\\test.jpg");
1 голос
/ 23 сентября 2010

вы можете использовать поток памяти или поместить его в массив байтов []

http://www.vcskicks.com/image-to-byte.php

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