【问题标题】:VB.net BackgroundWorker Pause/ResumeVB.net BackgroundWorker 暂停/恢复
【发布时间】:2013-07-26 16:04:13
【问题描述】:

我想创建两个按钮来暂停和恢复我的后台工作人员,但我不知道我的代码从哪里开始,我刚刚开始学习 VB.net,想了解后台工作人员的暂停和恢复功能。

这是我希望暂停和恢复的现有 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

此代码现在可以工作了,感谢您的提示

【问题讨论】:

标签: vb.net backgroundworker


【解决方案1】:

【讨论】:

  • 我现在已经更新了我的代码,应用了你链接我的东西,但它给了我一个异常错误“对象引用未设置为对象的实例”。似乎重置事件没有与我的 BackgroundWorker 链接。
  • 我的代码现在正在工作暂停和恢复工作。感谢您的提示。我已经更新了我的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
相关资源
最近更新 更多