Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Il existe plusieurs circonstances quand il est important qu’une application conserve son utilisation de la mémoire faible. Les événements personnalisés permettent à l’application d’utiliser la mémoire uniquement pour les événements qu’elle gère.
Par défaut, lorsqu’une classe déclare un événement, le compilateur alloue de la mémoire d’un champ pour stocker les informations d’événement. Si une classe a de nombreux événements inutilisés, elle occupe inutilement de la mémoire.
Au lieu d’utiliser l’implémentation par défaut des événements que Visual Basic fournit, vous pouvez utiliser des événements personnalisés pour gérer l’utilisation de la mémoire plus soigneusement.
Exemple :
Dans cet exemple, la classe utilise une instance de la EventHandlerList classe, stockée dans le Events
champ, pour stocker des informations sur les événements en cours d’utilisation. La EventHandlerList classe est une classe de liste optimisée conçue pour contenir des délégués.
Tous les événements de la classe utilisent le Events
champ pour suivre les méthodes qui gèrent chaque événement.
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
' Define the DoubleClick event to use the same delegate store.
Public Custom Event DoubleClick As EventHandler
AddHandler(ByVal value As EventHandler)
Events.AddHandler("DoubleClickEvent", value)
End AddHandler
RemoveHandler(ByVal value As EventHandler)
Events.RemoveHandler("DoubleClickEvent", value)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)
CType(Events("DoubleClickEvent"), EventHandler).Invoke(sender, e)
End RaiseEvent
End Event
' Define additional events to use the same delegate store.
' ...
End Class