如何:宣告自訂事件以節省記憶體 (Visual Basic)

在某些情況下,應用程式必須保持記憶體低使用量。 自訂事件只允許應用程式針對其所處理的事件使用記憶體。

根據預設,當類別宣告事件時,編譯器會為欄位配置記憶體來儲存事件資訊。 如果某個類別有許多未使用的事件,其會不必要地佔用記憶體。

您可以使用自訂事件仔細管理記憶體使用量,而不是使用 Visual Basic 提供之事件的預設實作。

範例

在此範例中,類別會使用儲存在 Events 欄位中的 EventHandlerList 類別執行個體來儲存使用中事件的相關資訊。 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

另請參閱