Sevenzip压缩事件未触发

时间:2014-05-25 21:30:56

标签: c# events compression 7zip sevenzipsharp

我有一个winform应用程序使用sevenzip.dll并实现它的能力,以压缩提取文件和目录。 我的问题是我想使用sevenzip.compressor类的压缩事件来跟踪压缩进度并使用progressBar显示它。 问题是,事件永远不会触发(在调试模式下检查),而所有其他事件都在工作,例如CompressionFinished事件。 我发现其他开发人员遇到了同样的问题,但没有人提供答案。 注意:dll的提取器类也按预期工作,所有事件都在触发,包括extractor.extracting事件。 任何有关如何克服这个问题的帮助都会受到关注。 以下是我正在使用的一些代码:

 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));

1 个答案:

答案 0 :(得分:2)

找到遇到同样问题的所有人的答案。

仅当压缩方法为lzma时,才会触发事件触发。

只需将一行更改为:

compressor.CompressionMethod = CompressionMethod.Lzma;