VB.net BackgroundWorker暂停/恢复
我想创建两个按钮来暂停和恢复我的backgroundworker,但我不知道从哪里开始我的代码,我刚刚开始学习VB.net,想了解backgroundworker的暂停和恢复功能 这是我现有的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
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链接。我的代码现在正在工作暂停和恢复工作。谢谢你的提示。我已经更新了我的代码。