当前位置:编程学习 > C#/ASP.NET >>

e.Cancel = True在这个过程中具体的含义是什么?

    Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim 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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,