В моем приложении WPF у меня есть этот вспомогательный метод:
public static void CreateZip(string[] source, string targetZipName)
{
string sourceName = string.Join(" ", source.Select(f => "\"" + f + "\""));
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = @"C:\Program Files\7-Zip\7zG.exe";
p.Arguments = "a \"" + targetZipName + "\" " + sourceName + " -mx=9";
p.WindowStyle = ProcessWindowStyle.Hidden;
Process x = Process.Start(p);
x.WaitForExit();
}
Я передаю пути к двоичным файлам и один CSV-файл, чтобы сжать их в архив 7z. Проблема заключается в том, что такой обернутый процесс 7z требует много памяти для архивирования файла размером 300 МБ. Когда я запускаю 7z независимо от cmd или его графического интерфейса, это занимает гораздо меньше оперативной памяти.