Bagikan melalui


Cara: Mendeklarasikan Peristiwa Kustom Untuk Menghemat Memori (Visual Basic)

Ada beberapa keadaan ketika penting bahwa aplikasi menjaga penggunaan memorinya tetap rendah. Peristiwa kustom memungkinkan aplikasi menggunakan memori hanya untuk peristiwa yang ditanganinya.

Secara default, saat kelas mendeklarasikan peristiwa, pengkompilasi mengalokasikan memori untuk bidang untuk menyimpan informasi peristiwa. Jika sebuah kelas memiliki banyak peristiwa yang tidak digunakan, peristiwa tersebut tidak perlu menghabiskan memori.

Alih-alih menggunakan implementasi default peristiwa yang disediakan Visual Basic, Anda dapat menggunakan peristiwa kustom untuk mengelola penggunaan memori dengan lebih hati-hati.

Contoh

Dalam contoh ini, kelas menggunakan satu instans EventHandlerList kelas, yang disimpan di Events bidang , untuk menyimpan informasi tentang peristiwa yang digunakan. Kelas EventHandlerList ini adalah kelas daftar yang dioptimalkan yang dirancang untuk menampung delegasi.

Semua peristiwa di kelas menggunakan Events bidang untuk melacak metode apa yang menangani setiap peristiwa.

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

Lihat juga