Sdílet prostřednictvím


Jak: deklarovat vlastní události šetřit paměť (Visual Basic)

Je důležité, že aplikace zachovat jeho využití paměti nízké existuje několik okolností.Vlastní události povolit aplikaci použít pouze pro události, které zpracovává paměti.

Standardně při prohlašuje třídy událostí, kompilátor přidělí paměť pro pole k uložení informací o události.Pokud mnoho událostí nepoužívané třídy, jejich zbytečně zabírat paměť.

Namísto výchozí implementace událostí, které poskytuje jazyka Visual Basic můžete spravovat více pečlivě využití paměti vlastní události.

Příklad

V tomto příkladu používá třídy jednu instanci EventHandlerList třídy, které jsou uloženy v Events pole ukládat informace o událostech v použití.EventHandlerList Třídy je optimalizovaný seznamu třídy určené pro delegáty.

Všechny události v použití třídy Events pole ke sledování jsou metody zpracování jednotlivých událostí.

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

Viz také

Úkoly

Jak: deklarovat vlastní události zabránit zablokování (Visual Basic)

Referenční dokumentace

EventHandlerList

Další zdroje

Události (Visual Basic)