當應用程式保持記憶體使用量低時,有幾個情況很重要。 自定義事件可讓應用程式只針對它處理的事件使用記憶體。
根據預設,當類別宣告事件時,編譯程式會為字段配置記憶體來儲存事件資訊。 如果類別有許多未使用的事件,它們會不必要地佔用記憶體。
您可以使用自定義事件,更仔細地管理記憶體使用量,而不是使用Visual Basic所提供的事件預設實作。
範例
在此範例中,類別會使用儲存在 EventHandlerList 欄位中的Events一個 類別實例,來儲存使用中事件的相關信息。 類別 EventHandlerList 是專為保存委派而設計的優化清單類別。
類別中的所有事件都會使用 Events 欄位來追蹤處理每個事件的方法。
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