示例#1
0
        private void ExtractionFinished(string extractionDir, bool success)
        {
            extractProgressPanel1.UpdateProgress(LastestProgress);

            ExtractionProgressTimer.Stop();
            CancelExtractButton.Enabled = false;

            Application.DoEvents();

            if (ExtractionTask != null && ExtractionTask.Status == TaskStatus.Running)
            {
                ExtractionTask.Wait(2000);
            }

            extractProgressPanel1.FinishExtraction();
            //ExtractingLabel.Visible = false;
            //CurrentFileLabel.Text = "Copying files to destination...";
            CancelExtractButton.Text = "Close";

            try
            {
                if (success)
                {
                    CopyingFilesToDest = true;
                    var extractedFiles = Directory.GetFileSystemEntries(extractionDir);
                    var result         = FileHelper.MoveFiles(extractedFiles, TargetPath, false);
                    if (!result)
                    {
                        //show error message
                    }
                }
            }
            finally
            {
                CopyingFilesToDest = false;
                NativeMethods.DeleteFileOrFolder(extractionDir);
            }

            CancelExtractButton.Enabled = true;
        }
示例#2
0
        private void StartExtraction()
        {
            CreateDestinationFolder();

            string tmpExtractDir = GetTmpExtractionDirectory();

            CancellationSource = new CancellationTokenSource();
            ExtractionStart    = DateTime.Now;
            LastestProgress    = LifFile.ExtractionProgress.Default;
            ExtractionProgressTimer.Start();
            extractProgressPanel1.BeginExtraction();

            var entriesArray = ItemsToExtract.ToArray();

            if (ExtractFolderContent)
            {
                entriesArray = (ItemsToExtract[0] as LifFile.FolderEntry).Entries.ToArray();
            }

            ExtractButton.Enabled       = false;
            DestinationGroupBox.Enabled = false;
            ProgressGroupBox.Enabled    = true;

            ExtractionTask = Task.Factory.StartNew(() =>
            {
                bool extractionSucceded = false;

                try
                {
                    LifFile.ExtractEntries(entriesArray, tmpExtractDir,
                                           CancellationSource.Token, OnExtractionProgress);
                    extractionSucceded = true;
                }
                catch
                {
                }

                BeginInvoke((Action)(() => ExtractionFinished(tmpExtractDir, extractionSucceded)));
            });
        }