使用Ionic Zip压缩时失败

9
我正在使用最新版本的Ionic Zip,版本号为1.9.1.8。我已经将Ionic Zip的属性设置为ParallelDeflateThreshold = 0。在过去的两个月里,压缩机制一直工作得很好。但是突然间它停止了工作,压缩线程只是挂起了,Ionic Zip只创建了临时文件而未能创建zip文件。即使是小文件大小,我都可以轻松地重现这个问题。
我对这个问题的分析如下:
问题出在Ionic Zip的最新版本上,它在创建zip文件时变得卡顿了。我们注意到,还有其他几个使用此dll的用户也报告了类似的错误。请参考此链接。通过禁用Ionic Zip的ParallelThreshold属性,可以解决此问题,但对于大型日志文件,性能会降低,因为它只能以单线程模式运行而不是多线程模式。
通过将ParallelDeflateThreshold属性设置为默认值,问题已经解决。但我找不到这个问题的确切原因。为什么压缩会突然失败?没有机器更改。

可能有人在 http://dotnetzip.codeplex.com/ 上能够提供帮助。 - Surfbutler
1个回答

19

我遇到了类似的问题,如果压缩文件小于20-25MB, 压缩时间大约为3-4秒,但是如果文件超过这个大小,就永远压缩不完了。代码一直没有执行完。

我开始担心使用DotNetZip库是否是错误的决定,因为我们要处理高达500MB的压缩文件。

在保存zip文件的那一行代码之前,我添加了:zip.ParallelDeflateThreshold = -1;

这样确保不会创建单独的线程。看起来一旦压缩文件超过一定阈值,DotNetZip就会不停地创建大量的线程,导致获取最终zip文件的延迟非常大。


很奇怪,DotNetZip在处理大文件时会出现这样的行为。不管怎样,我已将此属性设置为默认值(如果我没记错的话是-1),现在它可以正常工作了。谢谢。 - Techy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接