【发布时间】:2016-04-07 09:33:47
【问题描述】:
我正在使用 VB 中的 Ionic Class 压缩文件。我想向 GUI 报告保存进度。我使用 Sub ProgessChanged 处理了 zip.SaveProgress 事件。它在主线程上工作,但我需要将它转移到工作线程。
这是我绑的..
Dim foldertozip As String
Dim zipfileaddress As String
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectFile_BT.Click
Dim th As Thread = New Thread(AddressOf ZipUp)
th.Start()
End Sub
Public Sub ZipUp()
Dim zip As ZipFile = New ZipFile
AddHandler zip.SaveProgress, AddressOf ProgressUpdater
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed
zip.BufferSize = My.Settings.BufferSize
zip.AddDirectory(foldertozip)
zip.Save(zipfileaddress)
End Sub
Public Shared Sub ProgressUpdater(ByVal sender As Object, ByVal e As SaveProgressEventArgs)
If (e.EventType = ZipProgressEventType.Saving_Completed) Then
Return
ElseIf (e.EventType = ZipProgressEventType.Saving_BeforeWriteEntry) Then
Status.Label1.Text = e.CurrentEntry.FileName
ElseIf (e.EventType = ZipProgressEventType.Saving_EntryBytesRead) Then
Status.PercentLabel.Text = CStr(CInt(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))
Status.ProgressBar1.Value = CInt(CInt(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))
End If
End Sub
我对线程不太熟悉...
谢谢
【问题讨论】:
标签: vb.net multithreading zipfile