Получение статуса прогресса при распаковке ZIP архива - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Вообщем я распаковываю ZIP архив путем:
            ZipForge zip = new ZipForge();
            zip.FileName = "C:\\Users\\stels009\\Desktop\\Net.zip";
            zip.OpenArchive();
            zip.BaseDir = "C:\\Users\\stels009\\Desktop\\";
            zip.ExtractFiles("*.*");
            zip.CloseArchive();
все работает отлично, но мне помимо обычной разоархивации нужно получить статус разоархивации, то есть сколько процентов разархивировалось в данный момент, чтобы это потом применить на progresBar. Заранее благодарен.

Решение задачи: «Получение статуса прогресса при распаковке ZIP архива»

textual
Листинг программы
        public void unZip()
        {
                var zip = ZipFile.Read(@"" + appData + "\\123.1");
                zip.ExtractProgress += zip_ExtractProgress;
                progressBar1.Maximum = zip.Count;
 
                context = SynchronizationContext.Current;
                new Thread(
                    delegate()
                    {
                        ExtractAsync(@"" + appData + "\\", zip);
                    }).Start();
        } 
//======================================================================================================================== 
          public void ExtractAsync ( string to, ZipFile zip )
                {
                    zip.ExtractAll( to, ExtractExistingFileAction.OverwriteSilently );
                    zip.Dispose();
                }
//======================================================================================================================== 
      public void zip_ExtractProgress ( object sender, ExtractProgressEventArgs e )
                {
                    switch ( e.EventType )
                    {
                    case ZipProgressEventType.Extracting_AfterExtractEntry:
                        if ( context != null )
                            context.Send(
                                ( o ) => {
                                    // --->
                                    button1.Text = string.Format( 
                                        "{0} from {1}", 
                                        e.EntriesExtracted, 
                                        e.EntriesTotal 
                                        );
                                    progressBar1.Value = e.EntriesExtracted;
                                    // <---
                                },
                                null
                                );
                        break;
                    }
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы