Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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