Megosztás a következőn keresztül:


Útmutató: Egyéni események deklarálása a memória megőrzéséhez (Visual Basic)

Számos olyan körülmény van, amikor fontos, hogy egy alkalmazás alacsonyan tartsa a memóriahasználatát. Az egyéni események lehetővé teszik, hogy az alkalmazás csak az általa kezelt eseményekhez használjon memóriát.

Alapértelmezés szerint, amikor egy osztály deklarál egy eseményt, a fordító memóriát foglal le egy mező számára az eseményadatok tárolásához. Ha egy osztály sok nem használt eseményt használ, feleslegesen fel kell vennie a memóriát.

A Visual Basic által biztosított események alapértelmezett implementálása helyett egyéni eseményeket is használhat a memóriahasználat körültekintőbb kezeléséhez.

Példa

Ebben a példában az osztály az osztály egy, a EventHandlerList mezőben tárolt példányát használja a Events használt eseményekre vonatkozó információk tárolására. Az EventHandlerList osztály egy olyan optimalizált listaosztály, amelyet meghatalmazottak tárolására terveztek.

Az osztály összes eseménye a Events mező használatával nyomon követi, hogy milyen metódusok kezelik az egyes eseményeket.

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

Lásd még