Получение статуса прогресса при распаковке ZIP архива - C#
Формулировка задачи:
Всем доброго времени суток.
Вообщем я распаковываю ZIP архив путем: все работает отлично, но мне помимо обычной разоархивации нужно получить статус разоархивации, то есть сколько процентов разархивировалось в данный момент, чтобы это потом применить на progresBar.
Заранее благодарен.
ZipForge zip = new ZipForge();
zip.FileName = "C:\\Users\\stels009\\Desktop\\Net.zip";
zip.OpenArchive();
zip.BaseDir = "C:\\Users\\stels009\\Desktop\\";
zip.ExtractFiles("*.*");
zip.CloseArchive();Решение задачи: «Получение статуса прогресса при распаковке 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;
}
}