For some reason when I try to unpack a zip it does not update the progress bar any help would be welcomed.
Imports Ionic.Zip
Imports System.Threading
Public Class Form1
Private Property CurrentCount As Integer
Private Property TotalCount As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Delegate Sub SetStatusTextInvoker(ByVal Text As String)
Private Sub SetStatusText(ByVal Text As String)
If Me.InvokeRequired Then
Me.Invoke(New SetStatusTextInvoker(AddressOf SetStatusText), Text)
Else
Label1.Text = Text
End If
End Sub
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim TotalSize As Long
Dim ZipToUnpack As String = "C:\temp\1.zip"
Dim extractDir As String = "C:\temp\extract"
Try
Using zip As ZipFile = ZipFile.Read(ZipToUnpack)
AddHandler (zip.ExtractProgress), New EventHandler(Of ExtractProgressEventArgs)(AddressOf Zip_ExtractProgress)
For Each Entry As ZipEntry In zip.Entries
TotalSize += Entry.UncompressedSize
Next
For Each Entry As ZipEntry In zip.Entries
Entry.Extract(extractDir, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently)
Next
End Using
Catch EX As Exception
MessageBox.Show(EX.Message)
End Try
End Sub
Private Sub Zip_ExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs)
If BackgroundWorker1.CancellationPending Then
e.Cancel = True
End If
Select Case e.EventType
Case ZipProgressEventType.Extracting_EntryBytesWritten
Dim Entry As Integer
Dim CurrentCount As Integer = Entry
BackgroundWorker1.ReportProgress(CInt(Int((100 * (CurrentCount / TotalCount)))))
End Select
End Sub
End Class