多播委托 关键词 Combine

    '意义  夸线程调用控件  多窗口交互  
    '关键词System.Delegate.Combine 可以将两个委托的调用列表关联在一起
    '一、定义委托 (注意委托的作用域(范围)可以声明在Class外)
    '二、 准备匹配委托的方法
    '三、实例化委托
    '四、调用委托

    Public Delegate Sub testDelegetSub()

    Dim DelegetSub1 As testDelegetSub = New testDelegetSub(AddressOf testDelegateSub2)
    Dim DelegetSub2 As testDelegetSub = New testDelegetSub(AddressOf testDelegateSub3)
    Dim DelegetSub3 As testDelegetSub = System.Delegate.Combine(DelegetSub1, DelegetSub2)

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        DelegetSub3() '先调用DelegetSub1、DelegetSub2
        DelegetSub3 = System.Delegate.Remove(DelegetSub3, DelegetSub1) '移除DelegetSub3 中的DelegetSub1  再赋值给DelegetSub3
        DelegetSub3() '其实是只调用DelegetSub2

        DelegetSub3 = System.Delegate.Remove(DelegetSub3, DelegetSub1) '已经移除过DelegetSub1 但不会报错
        DelegetSub3 = System.Delegate.Remove(DelegetSub3, DelegetSub2)

        If DelegetSub3 Is Nothing Then
            MessageBox.Show("DelegetSub3此委托为空不能调用")
        Else
            DelegetSub3() ' DelegetSub3里面为空时调用会报错  所有要先判断
        End If
    End Sub


    Private Sub testDelegateSub2()
        MessageBox.Show("委托测试成功111!!!")
        Me.Text = "委托测试成功111!!!"
    End Sub
    Private Sub testDelegateSub3()
        MessageBox.Show("委托测试成功222!!!")
    End Sub

 

posted @ 2021-06-28 16:08  浅物  阅读(129)  评论(0)    收藏  举报