压缩事件未触发
本文关键字:事件 压缩 | 更新日期: 2023-09-27 18:05:10
我有一个winform应用程序,它使用了sevenzip.dll并实现了它的功能,以便压缩提取文件和目录。我的问题是,我想使用sevenzip.compressor类的压缩事件来跟踪压缩进度并使用progressBar显示它。问题是,事件永远不会触发(在调试模式下检查),而所有其他事件都在工作,例如CompressionFinished事件。我发现其他开发人员也遇到了同样的问题,但没有人提供答案。注意:dll的提取器类也按预期工作,所有事件都将触发,包括提取器。提取事件。任何关于如何克服这个问题的帮助将不胜感激。下面是我使用的一些代码:
SevenZipCompressor compressor = new SevenZipCompressor();
// NOT FIRING
compressor.Compressing += new EventHandler<ProgressEventArgs>(compressor_Compressing);
// Firing as expected
compressor.CompressionFinished += new EventHandler<EventArgs>(compressor_CompressionFinished);
compressor.ArchiveFormat = OutArchiveFormat.Zip;
// if this value is true - then no events are fired
compressor.FastCompression = false;
compressor.CompressionMethod = CompressionMethod.Default;
compressor.TempFolderPath = System.IO.Path.GetTempPath();
compressor.EventSynchronization = EventSynchronizationStrategy.AlwaysAsynchronous;
compressor.CompressDirectory(source, output, GeneratePassword(backupID, customerID));
为所有遇到同样问题的人找到了答案。
只有当压缩方法为lzma时才会触发压缩事件。
只改一行为:
compressor.CompressionMethod = CompressionMethod.Lzma;