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