Я пытаюсь отладить исключение OutOfMemoryException
, которое возникает при создании довольно большого ZIP
файла с использованием ] System.IO.Packaging.ZipPackage
.
Код выполняет итерацию по большому списку объектов, выполняя следующие действия для каждого объекта.
PackagePart
для файла. System.IO.Stream
в другой:
FileStream
PackagePart :: GetStream ( )
=> MS.Internal.IO.Zip.ZipIOModeEnforcingStream
Наконец, он вызывает Package :: Close ()
, который сохраняет файл.
Проблема, с которой я столкнулся, заключается в том, что для особенно большого списка объектов я вижу исключение OutOfMemoryException
(размер процесса x86 приближается к размеру 1,2 ГБ).
Я думал о разделении данных объекта на куски, чтобы обрабатывать только меньшее количество за цикл (т.е. шаги 1-3 выше). Идея состоит в том, что я бы создал ZIP-файлы n
во временном каталоге, а затем нашел бы способ объединить их в один архив.
Возможно ли это с помощью System.IO.Packaging
? Что бы я использовал для объединения частей?
Или есть способ лучше исправить это?