C# Невозможно удалить файлы после преобразования с помощью командной строки Ghostscript [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# Невозможно удалить файлы после преобразования с помощью командной строки Ghostscript [дубликат]

Сообщение Anonymous »


Я разрабатываю класс для преобразования PDF-файла в массив System.Bitmap[] с помощью Ghostscript. Насколько я знаю, Ghostscript ограничен командной строкой, поэтому я запускаю его как процесс. Все работает нормально, код генерирует изображение типа jpg для каждой страницы. После этого я создаю список растровых изображений и клонирую его. Теперь, когда я закончу, я хочу удалить сгенерированные файлы. Это невозможно, так как собственный процесс все равно блокирует его. Ошибка возникает в цикле, который я отметил /*Удалить файлы после преобразования*/.

Кто-нибудь знает, как разблокировать файлы перед удалением?

Пожалуйста, найдите мой код ниже:
public static System.Drawing.Bitmap[] PDF2Images(строка Имя файла, строка Tempfolder, строка GSExecutable, разрешение int){ System.Collections.Generic.List lstBMP = новый System.Collections.Generic.List(); /*Удалить все файлы jpg во временной папке*/ foreach (строка str в System.IO.Directory.GetFiles(Tempfolder, "*.jpg")) { если (str.ToUpper().EndsWith(".JPG")) { пытаться { System.IO.File.Delete(str); } catch (System.Exception ex) { System.Console.WriteLine("Ошибка удаления '" + str + "'."); } } } /*Получить файлы */ System.Collections.Generic.List lstOldFiles = new System.Collections.Generic.List(System.IO.Directory.GetFiles(Tempfolder, "*.jpg")); /*Запускаем скрипт*/ строка ars = "-dNOPAUSE -sDEVICE=jpeg -r" + Разрешение.ToString() + " -o" + Tempfolder + "%d.jpg -sPAPERSIZE=a4 " + "\"" +Filename + "\""; Процесс процесса = новый процесс (); proc.StartInfo.FileName = GSExecutable; proc.StartInfo.Arguments = ars; proc.StartInfo.CreateNoWindow = ложь; процесс.Старт(); процесс.WaitForExit(); проц.Dispose(); проц = ноль; Система.GC.Collect(); /*Зациклить все новые созданные файлы*/ System.Drawing.Bitmap BMP = ноль; System.Collections.Generic.List lstDelFiles = new System.Collections.Generic.List(); foreach(строка jpgFilename в System.IO.Directory.GetFiles(Tempfolder, "*.jpg")) { if(!lstOldFiles.Contains(jpgимя_файла)) { BMP = System.Drawing.Bitmap.FromFile(имя_файла jpg) как System.Drawing.Bitmap; lstBMP.Add(BMP.Clone(new System.Drawing.Rectangle(0,0,BMP.Width, BMP.Height), BMP.PixelFormat)); БМП.Расположить(); БМП = ноль; lstDelFiles.Add(jpgимя_файла); } } /*Удалить файлы после конвертации*/ foreach (строка str в lstDelFiles) { пытаться { System.IO.File.Delete(str); }catch(System.Exception ex) { /*Следующее исключение выдается для каждого файла*/ System.Console.WriteLine("Ошибка удаления файла '" + str + "' после преобразования в System.Bitmap." + System.Environment.NewLine + "Подробности: " + ex.Message); } } вернуть lstBMP.ToArray(); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»