DotNetZip如​​何修复0000000 CRC32问题?

时间:2013-11-01 16:20:20

标签: c# dotnetzip

我正在使用DotNetZip将多个MemoryStream添加到单个存档中。到目前为止,我的代码在我选择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;

1 个答案:

答案 0 :(得分: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;
}