2017-07-19 34 views
0

請幫助Stackoverflow社區。我需要解壓ZIP文件而不會阻塞應用程序。VB.NET解壓縮ZIP文件沒有滯後

Using zip1 As ZipFile = ZipFile.Read(".\packageData\" + zip.Text + ".zip") 
      Dim Z As ZipEntry 

      For Each Z In zip1 
       Z.Extract(".\apps\", ExtractExistingFileAction.OverwriteSilently) 
      Next 
     End Using 
+2

如果您不想凍結您的UI,請不要在UI線程上執行長時間運行的操作。 .NET爲實現並行或多線程提供了許多手段。 – jmcilhinney

回答

1

在自己的線程中運行該解壓縮操作。例如,使用任務(在Windows窗體應用程序中):

Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim worker As New Task(Sub() 
          Using zip1 As ZipFile = ZipFile.Read(".\packageData\" + zip.Text + ".zip") 
          Dim Z As ZipEntry 

          For Each Z In zip1 
           Z.Extract(".\apps\", ExtractExistingFileAction.OverwriteSilently) 
          Next 
          End Using 
         End Sub) 
    worker.Start() 
    Await worker 
    MsgBox("Done.") 
End Sub