我正在尝试调试一个
代码正在遍历一个大型对象列表,对于每个对象执行以下操作:
我遇到的问题是,对于特别大的对象列表,我看到一个
我考虑将对象数据分成块,这样我每次只处理较小的数量(即上述步骤1-3)。我的想法是在临时目录中创建
使用
还是有更好的方法来解决这个问题?
OutOfMemoryException
,当使用System.IO.Packaging.ZipPackage
创建一个相当大的ZIP
文件时会出现该异常。代码正在遍历一个大型对象列表,对于每个对象执行以下操作:
- 将对象数据序列化到临时文件中。
- 为该文件创建一个
PackagePart
。 - 从源
System.IO.Stream
复制到另一个:- 源流:
FileStream
- 目标流:
PackagePart::GetStream()
=>MS.Internal.IO.Zip.ZipIOModeEnforcingStream
- 源流:
Package::Close()
保存文件。我遇到的问题是,对于特别大的对象列表,我看到一个
OutOfMemoryException
(x86进程大小达到约1.2GB)。我考虑将对象数据分成块,这样我每次只处理较小的数量(即上述步骤1-3)。我的想法是在临时目录中创建
n
个ZIP文件,然后找到一种方法将它们合并成一个单一的存档文件。使用
System.IO.Packaging
是否可能实现此功能?我应该使用什么来合并这些部分?还是有更好的方法来解决这个问题?