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

  1. Всем доброго времени суток. Вообщем я распаковываю ZIP архив путем:


textual

Код к задаче: «Получение статуса прогресса при распаковке ZIP архива - C#»

        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.000 из 5



Похожие ответы
  1. Добрый день! Задача в следующем: необходимо получать данные онлайн матчей с сайта myscore.ru/tennis/ в режиме реального времени(пишу бота в телеграм) В чем проблема? Как ни пытаюсь получить код страницы(и через HtmlAgilityPack и через webbrowser и через webclient) везде в коде страницы где должен находиться счет, который мне надо спарсить находится яваскрипт. Как его выполнить и получить код страницы как в браузере? Возможно можно как то исполнять именно сам яваскрипт, чтобы не грузить всю страницу целиком, а только получать результат(хотелось бы сделать частый опрос раз в 1-5 сек). Заранее спасибо за советы.

  1. Всем привет! Подскажите пожалуйста, как получить список файлов, но так, чтобы перед именем файла не было пути, а после - расширения? Я добавляю имена файлов в список вот так:

  1. Привет! В общем суть проблемы: Моё приложение слишком долго выполняется, и поэтому решил попробовать вынести код в Task. Так вот во время выполнения Task он должен оповещать о своем прогрессе изменяя положение в ProgressBar и отображая в Label что он делает сейчас. Так вот столкнулся с тем, что если я напрямую из Task'а буду обновлять ProgressBar и Label, то форма будет провисать. Как правильно передавать статус из Task'а на форму? Зарисовка моей проблемы:

  1. Например,браузер переходит в гугл - как это событие отловить и определить ip?

  1. Здравствуйте подскажите как вывести элемент из списка ( выполнить элегантно задачу не получается ). список

  1. Здравствуйте. Вопрос в том как получить id процесса созданного при запуске приложения.

  1. Имеется следующая строка Код 7.959 4.90 3361.23779 1871.21008 2.31 0.0289 420893 - - Как получить 1, 3 и 4 циферное значение? Пробовал через сплит.

  1. Здравствуйте! Не могли бы Вы подсказать как получить таблицу ARGB из изображения .bmp? Глубина цвета, соответственно, 32бит. Нужны именно цветовые значения, идущие после заголовка.

  1. Здравствуйте, имеется строка вида "func(text_1,Text2,text3)". На выходе хочу получить : "text_1" "Text2" "text3" Как лучше это сделать?

  1. Привет!Я использую приведенный ниже программный код для получения текущего значения мирового времени через службы NTP. В данной реализации у меня осуществляется доступ через сокеты по UDP-протоколу к серверу "time.windows.com". Иногда из-за перегрузки сервера возникают значительные задержки, и мне необходимо переключиться на получение времени с других серверов "pool.ntp.org" или "time-a.nist.gov". Любой из этих серверов в различное время суток дает различный тайм-аут, поэтому я не могу отдать какому-нибудь из них предпочтение. Код работает нормально, но мне нужно предусмотреть, чтобы в случае истечения таймаута socket.ReceiveTimeout = 3000 по одному из серверов, алгоритм начинал "стучаться" к другому серверу, третьему серверу. В случае всех неудачных 3-х попыток необходимо, чтобы в соответствующем методе возвращалось значение DateTime networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)), которое будет рассматриваться как индикатор неудачи в попытках получить текущее значение мирового времени через службы NTP.У меня возник вопрос, заключающийся в том, как необходимо видоизменить существующий код, чтобы осуществить данную процедуру? Заранее благодарна за помощь в решении данного вопроса.