0

我有一个 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));
4

1 回答 1

2

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

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

只需将一行更改为:

compressor.CompressionMethod = CompressionMethod.Lzma;
于 2014-06-04T19:53:05.370 回答