예제 #1
0
        protected virtual int OnDataAvailable(IntPtr p1, int p2)
        {
            int result = 1;

            if (this.currentFile != null)
            {
                this.currentFile.BytesExtracted += p2;
            }
            if (this.DataAvailable != null)
            {
                byte[] data = new byte[p2];
                Marshal.Copy(p1, data, 0, p2);
                DataAvailableEventArgs e = new DataAvailableEventArgs(data);
                this.DataAvailable(this, e);
                if (!e.ContinueOperation)
                {
                    result = -1;
                }
            }
            if ((this.ExtractionProgress != null) && (this.currentFile != null))
            {
                ExtractionProgressEventArgs e = new ExtractionProgressEventArgs();
                e.FileName        = this.currentFile.FileName;
                e.FileSize        = this.currentFile.UnpackedSize;
                e.BytesExtracted  = this.currentFile.BytesExtracted;
                e.PercentComplete = this.currentFile.PercentComplete;
                this.ExtractionProgress(this, e);
                if (!e.ContinueOperation)
                {
                    result = -1;
                }
            }
            return(result);
        }
예제 #2
0
        protected void OnExtractionProgress(object sender, ExtractionProgressEventArgs e)
        {
            int currentProgress = (int)e.PercentComplete;

            // Only raise event on whole percent progress increase
            if (currentProgress > progress)
            {
                progress = currentProgress;

                if (ExtractionProgress != null)
                {
                    ExtractionProgress(this, e);
                }
            }
        }
예제 #3
0
 protected virtual int OnDataAvailable(IntPtr p1, int p2)
 {
     int result = 1;
     if (this.currentFile != null)
         this.currentFile.BytesExtracted += p2;
     if (this.DataAvailable != null)
     {
         byte[] data = new byte[p2];
         Marshal.Copy(p1, data, 0, p2);
         DataAvailableEventArgs e = new DataAvailableEventArgs(data);
         this.DataAvailable(this, e);
         if (!e.ContinueOperation)
             result = -1;
     }
     if ((this.ExtractionProgress != null) && (this.currentFile != null))
     {
         ExtractionProgressEventArgs e = new ExtractionProgressEventArgs();
         e.FileName = this.currentFile.FileName;
         e.FileSize = this.currentFile.UnpackedSize;
         e.BytesExtracted = this.currentFile.BytesExtracted;
         e.PercentComplete = this.currentFile.PercentComplete;
         this.ExtractionProgress(this, e);
         if (!e.ContinueOperation)
             result = -1;
     }
     return result;
 }
예제 #4
0
        protected void OnExtractionProgress(object sender, ExtractionProgressEventArgs e)
        {
            int currentProgress = (int)e.PercentComplete;

            // Only raise event on whole percent progress increase
            if (currentProgress > progress)
            {
                progress = currentProgress;

                if (ExtractionProgress != null)
                    ExtractionProgress(this, e);
            }
        }