VB.net BackgroundWorker暂停/恢复

VB.net BackgroundWorker暂停/恢复,vb.net,backgroundworker,Vb.net,Backgroundworker,我想创建两个按钮来暂停和恢复我的backgroundworker,但我不知道从哪里开始我的代码,我刚刚开始学习VB.net,想了解backgroundworker的暂停和恢复功能 这是我现有的BackgroundWorker代码,我希望暂停并继续 Public resetevent As New ManualResetEvent(False) Dim boo As Nullable(Of Boolean) = True Private Sub Button3_Click(sender As O

我想创建两个按钮来暂停和恢复我的backgroundworker,但我不知道从哪里开始我的代码,我刚刚开始学习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
Public resetevent作为新的ManualResetEvent(False)
Dim boo为可空(布尔值)=真
私有子按钮3\u单击(发送者作为对象,e作为事件参数)处理按钮3。单击
尝试
如果BackgroundWorker2.IsBusy为True,则
BackgroundWorker2.RunWorkerAsync()
resetevent.Set()
如果结束
特例
结束尝试
端接头
私有子BackgroundWorker2_DoWork(发送方作为System.Object,e作为System.ComponentModel.DoWorkEventArgs)处理BackgroundWorker2.DoWork
Dim worker2作为System.ComponentModel.BackgroundWorker=CType(发送方,System.ComponentModel.BackgroundWorker)
尝试
以新System.IO.FileStream(“Sample.txt”,IO.FileMode.Open)的形式将流变暗
Dim sReader作为新的System.IO.StreamReader(流)
作为整数的Dim索引=0
当sReader.Peek>=0时执行
resetevent.WaitOne()
线程。睡眠(500)
添加(sReader.ReadLine)
延迟(1)
环
埃利斯特·托雷
线程。睡眠(1000)
Stream.Close()
sReader.close()
特例
MessageBox.Show(例如Message)
结束尝试
端接头
私有子BackgroundWorker2\u ProgressChanged(发送方作为System.Object,e作为System.ComponentModel.ProgressChangedEventArgs)处理BackgroundWorker2.ProgressChanged
尝试
特例
结束尝试
端接头
私有子BackgroundWorker2_已完成(发件人作为System.Object,e作为System.ComponentModel.RunWorkerCompletedEventArgs)处理BackgroundWorker2.RunWorkerCompleted
尝试
resetevent.Reset()
特例
结束尝试
端接头
私有子暂停\单击(发送者作为对象,e作为事件参数)处理暂停。单击
pause.Enabled=False
resme.Enabled=True
如果BackgroundWorker1.0正忙,则
boo=False
resetevent.Reset()
如果结束
端接头
Private Sub resme\u Click(发件人作为对象,e作为事件参数)处理resme。单击
resme.Enabled=False
pause.Enabled=True
如果BackgroundWorker1.0正忙,则
boo=True
resetevent.Set()
如果结束
此代码现已生效,感谢您提供的提示

请查看


对需要转换的代码使用转换器。。这些问题都应该有答案。

我的代码的可能副本现在正在工作暂停和恢复工作。感谢tipsi现在更新了我的代码,应用了您链接我的东西,但它给了我一个异常错误“对象引用未设置为对象实例”。似乎resetevent未与我的BackgroundWorker链接。我的代码现在正在工作暂停和恢复工作。谢谢你的提示。我已经更新了我的代码。