0

私は、抽出ファイルとディレクトリを圧縮するために、sevenzip.dll を使用し、その機能を実装する winform アプリを持っています。私の問題は、圧縮の進行状況を追跡し、それを progressBar で表示するために、 Sevenzip.compressor クラスの圧縮イベントを使用したいということです。問題は、 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 の場合にのみ発生します。

1行を次のように変更するだけです:

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