Porady: deklarowanie zdarzeń niestandardowych w celu zachowywania pamięci (Visual Basic)

Nie kilka okoliczności, w jest ważne, że aplikacja zachować jego użycia pamięci niski.Zdarzenia niestandardowe zezwolić aplikacji na użycie pamięci tylko dla zdarzenia, które obsługuje on.

Domyślnie gdy klasy deklaruje zdarzenie, kompilator przydziela pamięć dla pola, aby przechowywać informacje o zdarzeniach.Jeśli klasa ma wiele zdarzeń niewykorzystanych, niepotrzebnie zajmują pamięci.

Zamiast Domyślna implementacja zdarzeń, które zapewnia języka Visual Basic można użyć niestandardowych zdarzeń bardziej dokładnie zarządzać użycia pamięci.

Przykład

W tym przykładzie korzysta z jednego wystąpienia klasy EventHandlerList klasy, przechowywane w Events pola do przechowywania informacji o zdarzeniach w użyciu.EventHandlerList Klasa jest klasą listy zoptymalizowane, przeznaczone do przechowywania delegatów.

Wszystkie zdarzenia z korzystania z klasy Events pole, aby śledzić jakie metody są obsługi każdego zdarzenia.

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

Zobacz też

Zadania

Porady: deklarowanie zdarzeń niestandardowych w celu unikania blokowania (Visual Basic)

Informacje

EventHandlerList

Inne zasoby

Zdarzenia (Visual Basic)