您的位置:首页 > 移动开发 > Objective-C

Net事件安全调用模式

2009-08-07 16:57 453 查看
 Public Class MyPublisher

        Public Delegate Sub GenericEventHandler(Of T, U)(ByVal t As T, ByVal u As U)

        Public Delegate Sub GenericEventHandler(Of T)(ByVal t As T)

        Private deles As New List(Of GenericEventHandler(Of Integer))

        Public Event SyncNumberChanged As GenericEventHandler(Of Integer)

        Public Custom Event AsyncNumberChanged As GenericEventHandler(Of Integer)

            AddHandler(ByVal value As GenericEventHandler(Of Integer))

                deles.Add(value)

            End AddHandler

            RemoveHandler(ByVal value As GenericEventHandler(Of Integer))

                deles.Remove(value)

            End RemoveHandler

            RaiseEvent(ByVal t As Integer)

                Dim synchronizer As System.ComponentModel.ISynchronizeInvoke

                For Each dele As GenericEventHandler(Of Integer) In deles

                    synchronizer = TryCast(dele.Target, System.ComponentModel.ISynchronizeInvoke)

                    If synchronizer IsNot Nothing Then

                        If synchronizer.InvokeRequired = True Then

                            synchronizer.Invoke(dele, New Object() {t})

                            Return

                        End If

                    End If

                    dele.DynamicInvoke(t)

                Next

            End RaiseEvent

        End Event

        Public Sub AsyncFireEvent(ByVal int As Integer)

            RaiseEvent AsyncNumberChanged(int)

        End Sub

        Public Sub SyncFireEvent(ByVal int As Integer)

        End Sub

    End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  integer class object each list