Files
Karodeung/Epole/dialogForm/fExtractZip.vb
Arin(asus) c14b6e5cc1 ..
2023-10-03 22:38:19 +09:00

86 lines
2.5 KiB
VB.net

Public Class fExtractZip
Dim zip As Ionic.Zip.ZipFile
Public Sub New(filename As String)
' 디자이너에서 이 호출이 필요합니다.
InitializeComponent()
If System.IO.File.Exists(filename) = False Then
RunComplete = True
Else
Dim ro As New Ionic.Zip.ReadOptions()
ro.Encoding = System.Text.Encoding.Default
zip = Ionic.Zip.ZipFile.Read(filename, ro)
AddHandler zip.ExtractProgress, AddressOf extractevents
End If
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하세요.
Me.Text = "스타일 팩 적용 중 - 기다려 주세요"
End Sub
Delegate Sub extranhandler(sender As Object, e As Ionic.Zip.ExtractProgressEventArgs)
Sub extractevents(sender As Object, e As Ionic.Zip.ExtractProgressEventArgs)
If Me.InvokeRequired Then
Me.Invoke(New extranhandler(AddressOf extractevents), sender, e)
Else
Me.ProgressBar1.Value = e.EntriesExtracted
If e.CurrentEntry Is Nothing Then
lbFileName.Text = "----"
Else
lbFileName.Text = e.CurrentEntry.FileName
End If
lbFileName.Refresh()
End If
End Sub
Private Sub fExtractZip_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Show()
Application.DoEvents()
Timer1.Start()
End Sub
Dim mre As New System.Threading.ManualResetEvent(True)
Dim RunExtract As Boolean = False
Dim RunComplete As Boolean = False
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If mre.WaitOne(10) = False Then Return
mre.Reset()
'//완료여부확인
If RunComplete Then
Timer1.Enabled = False
mre.Set()
If Not zip Is Nothing Then
zip.Dispose()
zip = Nothing
End If
Me.DialogResult = DialogResult.OK
Else
'//처음시작
If RunExtract = False Then
Me.ProgressBar1.Value = 0
Me.ProgressBar1.Maximum = zip.Count
' Me.ProgressBar1.Style = ProgressBarStyle.Marquee
RunExtract = True
End If
If RunExtract Then
zip.ExtractAll(AppDomain.CurrentDomain.BaseDirectory, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently)
RunComplete = True
End If
End If
mre.Set()
End Sub
End Class