Buenas compañero,
Prueba esto... (lo he modificado, porque el código que tu pusiste no me funcionó muy bien..)
Código vb:
Ver originalPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sZipAExtraer As String = "C:\temp\aaa.zip"
Dim sDirectorioExtraccion As String = "C:\temp\aaa"
Dim oZip As ZipArchive = ZipFile.Open(sZipAExtraer, ZipArchiveMode.Read)
Dim lSize As Long
Dim lInicial As Long
Dim lstEntradas As List(Of ZipArchiveEntry) = oZip.Entries.OrderBy(Function(x) x.Length).ToList()
lstEntradas.ForEach(Sub(x)
lSize += x.Length
End Sub)
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = lSize
ProgressBar1.Value = 0
For Each ent As ZipArchiveEntry In lstEntradas
lInicial = (ent.Length * 10) / 100 '10%
ProgressBar1.Value += lInicial
ent.ExtractToFile(sDirectorioExtraccion & "/" & ent.Name, True)
ProgressBar1.Value += ent.Length - lInicial '100% del archivo
Next
End Sub
Te lo explico un poco...
1º) Ordeno la lista de entradas por tamaño (menor a mayor)
2º) Miro cuanto es el tamaño total (lSize)
3º) Recorro todas las entradas, de inicio, pongo un 10% del archivo como ya descomprimido, y una vez terminado, pongo el restante
Un saludo!!!