classes/clsBroker.vb

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

''' <summary>
''' 发布 订阅的中间类
''' 使用方法,在发布中定义类对象,并引发事件。
''' 在订阅类中注册回调函数。
''' </summary>
Public Class ClsBroker

    '=======================================
    '用于窗体间传递参数值
    '---------------------------------------
    '定义一个委托
    Public Delegate Sub TransmateObjectEvent(ByVal sender As Object, ByVal e As TransEventArg)

    '事件的委托列表,用来注册回调函数
    Public Shared onChangeList As List(Of TransmateObjectEvent)

    '用来同步的对象
    Public Shared m_obj As Object

    '定义一个自定义事件
    Public Shared Custom Event OnChange As TransmateObjectEvent
        '添加回调函数
        AddHandler(value As TransmateObjectEvent)
            If onChangeList Is Nothing Then
                onChangeList = New List(Of TransmateObjectEvent)

            End If
            If m_obj Is Nothing Then
                m_obj = New Object()
            End If

            '同步锁
            SyncLock m_obj
                onChangeList.Add(value)
            End SyncLock

        End AddHandler

        '移除回调函数
        RemoveHandler(value As TransmateObjectEvent)
            If onChangeList Is Nothing Then
                Return
            End If

            SyncLock m_obj
                onChangeList.Remove(value)
            End SyncLock
        End RemoveHandler

        '引发事件,广播回调
        RaiseEvent(sender As Object, e As TransEventArg)
            If onChangeList Is Nothing Then
                Return
            End If

            For Each tmpH As TransmateObjectEvent In onChangeList
                tmpH.Invoke(sender, e)
            Next
        End RaiseEvent
    End Event
后面还有 151 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。