none
Custom-Events RRS feed

  • Frage

  • Hallo,

    ich bin da gerade über etwas Interessantes gestolpert, ich weiß zwar noch nicht wie ich meinen Nutzen daraus ziehen kann, aber man lernt ja nie aus. Hierzu 2 Klassen:

    Public Class MemoryOptimizedBaseControl

       ' Define a delegate store for all event handlers.

       Private Events As New System.ComponentModel.EventHandlerList

     

       ' Define the Click event to use the delegate store.

       Public Custom Event Click As EventHandler

          AddHandler(ByVal value As EventHandler)

             Events.AddHandler("ClickEvent", value)

          End AddHandler

          RemoveHandler(ByVal value As EventHandler)

             Events.RemoveHandler("ClickEvent", value)

          End RemoveHandler

          RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)

             CType(Events("ClickEvent"), EventHandler).Invoke(sender, e)

          End RaiseEvent

       End Event

     

    End Class

     

    Public NotInheritable Class ReliabilityOptimizedControl

       'Defines a list for storing the delegates

       Private EventHandlerList As New ArrayList

     

       'Defines the Click event using the custom event syntax.

       'The RaiseEvent always invokes the delegates asynchronously

       Public Custom Event Click As EventHandler

          AddHandler(ByVal value As EventHandler)

             EventHandlerList.Add(value)

          End AddHandler

          RemoveHandler(ByVal value As EventHandler)

             EventHandlerList.Remove(value)

          End RemoveHandler

          RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)

             For Each handler As EventHandler In EventHandlerList

                If handler IsNot Nothing Then

                   handler.BeginInvoke(sender, e, Nothing, Nothing)

                End If

             Next

          End RaiseEvent

       End Event

     

    End Class

     

    Die obere Klasse soll den Speicherbedarf reduzieren, die untere asynchrone Events ermöglichen. Beides Dinge die eigentlich wünschenswert sind. Stellt sich nur noch die Frage ob man die irgendwie vereinigen kann?

     

    Danke für jeden Tipp und weiterreichende Infos

    --

    Gruß Scotty

    Freitag, 25. März 2011 15:31

Alle Antworten

  • Hallo,

    hinter eins komme ich nicht, in beiden Klassen wird AddHandler und RemoveHandler auf den gleichen Delegate ausgeführt, aber warum?

    --

    Gruß Scotty

    Samstag, 2. April 2011 06:40