2013-07-25 158 views
2

我想創建兩個按鈕,將暫停和恢復我的BackgroundWorker,但我不知道我從哪裏開始我的代碼,我剛開始學習VB.net,並想了解暫停和恢復背景工作的功能。VB.net BackgroundWorker暫停/恢復

這裏是我現有的BackgroundWorker的代碼,我希望的提示暫停和恢復

Public resetevent As New ManualResetEvent(False) 
Dim boo As Nullable(Of Boolean) = True 

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    Try 
     If BackgroundWorker2.IsBusy <> True Then 
      BackgroundWorker2.RunWorkerAsync() 
      resetevent.Set() 

     End If 
    Catch ex As Exception 

    End Try 
End Sub 

Private Sub BackgroundWorker2_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork 
    Dim worker2 As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker) 
    Try 

     Dim Stream As New System.IO.FileStream("Sample.txt", IO.FileMode.Open) 
     Dim sReader As New System.IO.StreamReader(Stream) 
     Dim Index As Integer = 0 


     Do While sReader.Peek >= 0 
      resetevent.WaitOne() 
      Thread.Sleep(500) 
      eList.Add(sReader.ReadLine) 
      Delay(1) 
     Loop 
     eArray = eList.ToArray 
     Thread.Sleep(1000) 

     Stream.Close() 
     sReader.close() 

    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

Private Sub BackgroundWorker2_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged 
    Try 

    Catch ex As Exception 

    End Try 
End Sub 

Private Sub BackgroundWorker2_Completed(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker2.RunWorkerCompleted 
    Try 
     resetevent.Reset() 
    Catch ex As Exception 

    End Try 
End Sub 

Private Sub pause_Click(sender As Object, e As EventArgs) Handles pause.Click 
    pause.Enabled = False 
    resme.Enabled = True 

    If BackgroundWorker1.IsBusy Then 
     boo = False 
     resetevent.Reset() 
    End If 



End Sub 

Private Sub resme_Click(sender As Object, e As EventArgs) Handles resme.Click 
    resme.Enabled = False 
    pause.Enabled = True 

    If BackgroundWorker1.IsBusy Then 
     boo = True 
     resetevent.Set() 
    End If 

此代碼現在工作的感謝

+1

可能的[後臺工作者的暫停/恢復循環]的副本(http://stackoverflow.com/questions/8359058/pause-resume-loop-in-background-worker) –

+0

我的代碼現在工作暫停和恢復工作。感謝提示 –

回答

3

請看看

Pause/Resume loop in Background worker

and

How to pause and resume a BackgroundWorker?

How to implement Pause & Resume functionality with BackgroundWorker c#

使用一個轉換器,你需要轉換..這些應該都對你的答案代碼。

+0

我現在已經更新了我的代碼,應用了你已經鏈接的東西,但它給了我一個異常錯誤「對象引用未設置爲對象實例」。似乎resetevent沒有與我的BackgroundWorker鏈接。 –

+0

我的代碼現在工作暫停和恢復工作。感謝提示。我已更新我的代碼。 –