2014-09-23 1 views
1

그래서 나는 위치에 압축 파일을 추출하는 작은 추출 프로그램을 만들었고 추출 과정도 보여줍니다. 그러나 문제는 큰 zip을 추출 할 때마다 추출하는 동안 프로그램이 멈추고 프로세스를 종료하면 추출이 완료 될 때까지 되돌릴 수는 없지만 진행률 표시 줄의 진행 상태를 계속 볼 수 있다는 것입니다.VB2010 :이 추출 프로세스는 진행률 표시 줄이있는 backgroundworker에서 어떻게 실행합니까?

Form2.vb

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
     If TextBox1.Text = "" Then 

     Else 
      ProgressBar1.Visible = True 
      Button2.Enabled = False 
      Button3.Enabled = False 
      TextBox1.Enabled = False 
      Unzip("FileToExtract.zip", "PathToExtractTo") 
     End If 
    End Sub 

Unzip.vb 주에 백그라운드 작업자의 SimpleUnzip 서브를 넣어 같은

Imports Ionic.Zip 

Module SimpleUnzip 
    Public Sub Unzip(ByVal ZipToUnpack As String, ByVal DirectoryToExstractTo As String) 
     Try 
      Using zip As ZipFile = ZipFile.Read(ZipToUnpack) 
       Form2.ProgressBar1.Maximum = zip.Entries.Count 
       Dim entry As ZipEntry 
       For Each entry In zip 
        entry.Extract(DirectoryToExstractTo, ExtractExistingFileAction.OverwriteSilently) 
        Form2.ProgressBar1.Value = Form2.ProgressBar1.Value + 1 
       Next 
      End Using 
     Catch ex1 As Exception 

     End Try 
    End Sub 
End Module 

그래서 시도 것을 : 이것은 내가 지금까지 가지고있는 코드입니다 포럼 및 호출,하지만 그 전혀 작동하지 않습니다, 또한 모듈에서 배경 작업자 시도했다 추출하지만 progressbar 작동하지 않습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

답변

1

BackgroundWorker을 사용하는 모든 작업과 마찬가지로 DoWork 이벤트 처리기에서 작업 한 다음 ReportProgress을 호출하여 진행 상황을보고합니다. 이 라인 :

Form2.ProgressBar1.Maximum = zip.Entries.Count 

이 라인 :

Form2.ProgressBar1.Value = Form2.ProgressBar1.Value + 1 

것은 ReportProgress에 대한 호출로 대체해야 할 것입니다. ProgressChanged 이벤트 처리기에서 평소처럼 수행합니다 (예 : ProgressBar).

+0

예를 들어 설명해 주시겠습니까? 무슨 뜻인지 알 수는 있지만 어떻게 할 수 있을지 모르겠다. – blackhawk338

+0

'BackgroundWorker'를 사용하는 예가 있습니다. – jmcilhinney

+0

내 프로젝트를 위해 백그라운드 작업자를 사용하는 방법을 알고, 내 프로젝트를 어떻게 넣을지 모르겠다. – blackhawk338

관련 문제