0

我正在使用 DotNetZip 将多个 MemoryStreams 添加到单个存档中。到目前为止,当我选择 1 个或 2 个文件时,我的代码可以工作,但如果我添加更多文件,我的代码就不能工作。我发现不同之处在于那些坏存档的 CRC32 都是 00000000。与存档大小有关吗?任何帮助表示赞赏!我在 C# 中的代码:

foreach(.....){
       var zipEntryName=.....//Get the file name in string;
       var UDocument = .....//Get a object
       var UStream = UDocument .GetStream();
       UStream.Seek(0, SeekOrigin.Begin);
       ZipEntry entry = zipFile.AddEntry(zipEntryName,UStream );
 }
 var outputStream = new MemoryStream();
            outputStream.Seek(0, SeekOrigin.Begin);
            zipFile.Save(outputStream);
            outputStream.Flush();
            return outputStream;
4

1 回答 1

0

我认为这是因为内存泄漏。您正在 foreach 循环中创建对象,如果循环迭代更多次,问题就来了。

问题出在您的代码中:

var UDocument = .....//Get a object

单例是可以实例化一次且只能实例化一次的类。使用单例类如下:

public static SingletonSample InstanceCreation()
{
    private static object lockingObject = new object();
    if(singletonObject == null)
    {
         lock (lockingObject)
         {
             singletonObject = new SingletonSample();

         }
    }
    return singletonObject;
}
于 2013-11-01T16:53:41.303 回答