e.Cancel = True在这个过程中具体的含义是什么?
Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWorkDim i As Integer
For i = 1 To 10
If (worker.CancellationPending = True) Then
e.Cancel = True
Exit For
Else
System.Threading.Thread.Sleep(500)
worker.ReportProgress(i * 10)
End If
Next
End Sub
我试了一下,如果e.Cancel = false或者删除,好像都不影响代码的执行效果,这是为什么??? --------------------编程问答-------------------- e.Cancel = false不影响执行效果,应为默认值就是false
e.Cancel = true就会影响了 --------------------编程问答-------------------- e.Cancel = true终止操作,具体看帮助
DoWork 事件处理程序中的代码应定期检查 CancellationPending 属性值,并在该值为 true 时中止操作。出现这种情况时,可以将 System.ComponentModel..::.DoWorkEventArgs 的 Cancel 标志设置为 true,同时将 RunWorkerCompleted 事件处理程序中的 System.ComponentModel..::.RunWorkerCompletedEventArgs 的 Cancelled 标志设置为 true。 --------------------编程问答-------------------- 这个是用来和RunWorkerCompleted事件通信的,不会改变代码的行为。
如果你把它设置为True,就是告诉BackgroundWorker,我是因为用户发出了退出请求而退出的,也就是被取消了。
这样,你在RunWorkerCompleted事件中才能区分工作是完成还是被取消了。(通过检查事件参数的Cancelled属性)。
(BackgroundWorker不能自动区分这两种情况。不能说没有调用CancelAsync就是完成,调用了CancelAsync就是取消。因为即使调用了CancelAsync,代码也可以忽略掉他,自顾自地执行完毕。)
补充:.NET技术 , VB.NET