123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- namespace SevenZip
- {
- using System;
- using SevenZip.Sdk;
-
-
-
- internal sealed class LzmaProgressCallback : ICodeProgress
- {
- private readonly long _inSize;
- private float _oldPercentDone;
-
-
-
-
-
- public LzmaProgressCallback(long inSize, EventHandler<ProgressEventArgs> working)
- {
- _inSize = inSize;
- Working += working;
- }
- #region ICodeProgress Members
-
-
-
-
-
- public void SetProgress(long inSize, long outSize)
- {
- if (Working != null)
- {
- float newPercentDone = (inSize + 0.0f) / _inSize;
- float delta = newPercentDone - _oldPercentDone;
- if (delta * 100 < 1.0)
- {
- delta = 0;
- }
- else
- {
- _oldPercentDone = newPercentDone;
- }
- Working(this, new ProgressEventArgs(
- PercentDoneEventArgs.ProducePercentDone(newPercentDone),
- delta > 0 ? PercentDoneEventArgs.ProducePercentDone(delta) : (byte)0));
- }
- }
- #endregion
- public event EventHandler<ProgressEventArgs> Working;
- }
- }
|