C# Sevenzip压缩事件未触发

C# Sevenzip压缩事件未触发,c#,events,compression,7zip,sevenzipsharp,C#,Events,Compression,7zip,Sevenzipsharp,我有一个winform应用程序,它使用sevenzip.dll并实现它的功能,以便压缩一个提取文件和目录。 我的问题是我想使用sevenzip.compressor类的压缩事件来跟踪压缩进度并用progressBar显示它。 问题是,当所有其他事件(如CompressionFinished事件)都在工作时,事件从不激发(在调试模式下检查)。 我发现其他开发人员也遇到了同样的问题,但没有人提供答案。 注意:dll的提取器类也可以按预期工作,所有事件都会触发,包括extractor.extracti

我有一个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));
sevenzipc压缩机=新的sevenzipc压缩机();
//不开火
compressor.Compressing+=新事件处理程序(compressor\u Compressing);
//如期发射
compressor.CompressionFinished+=新事件处理程序(compressor_CompressionFinished);
compressor.ArchiveFormat=OutArchiveFormat.Zip;
//如果此值为true-则不会触发任何事件
compressor.FastCompression=false;
compressor.CompressionMethod=CompressionMethod.Default;
compressor.TempFolderPath=System.IO.Path.GetTempPath();
compressor.EventSynchronization=EventSynchronizationStrategy.always同步;
compressor.CompressDirectory(源、输出、生成密码(backupID、customerID));

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

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

只需将一行更改为:

compressor.CompressionMethod = CompressionMethod.Lzma;