방법: 메모리를 절약하는 사용자 지정 이벤트 선언(Visual Basic)How to: Declare Custom Events To Conserve Memory (Visual Basic)

응용 프로그램에서 메모리 사용량을 낮게 유지 하는 것이 중요 한 여러 가지 상황이 있습니다.There are several circumstances when it is important that an application keep its memory usage low. 사용자 지정 이벤트를 사용 하면 응용 프로그램에서 처리 하는 이벤트에 대해서만 메모리를 사용할 수 있습니다.Custom events allow the application to use memory only for the events that it handles.

기본적으로 클래스가 이벤트를 선언할 때 컴파일러는 이벤트 정보를 저장 하는 필드에 대 한 메모리를 할당 합니다.By default, when a class declares an event, the compiler allocates memory for a field to store the event information. 클래스에 사용 되지 않는 이벤트가 많이 있는 경우에는 불필요 하 게 메모리를 사용 합니다.If a class has many unused events, they needlessly take up memory.

Visual Basic에서 제공 하는 이벤트의 기본 구현을 사용 하는 대신 사용자 지정 이벤트를 사용 하 여 메모리 사용을 보다 신중 하 게 관리할 수 있습니다.Instead of using the default implementation of events that Visual Basic provides, you can use custom events to manage the memory usage more carefully.

Example

이 예제에서 클래스는 필드에 저장 된 클래스의 인스턴스 하나를 사용 하 여 EventHandlerList Events 사용 중인 이벤트에 대 한 정보를 저장 합니다.In this example, the class uses one instance of the EventHandlerList class, stored in the Events field, to store information about the events in use. EventHandlerList클래스는 대리자를 포함 하도록 디자인 된 최적화 된 목록 클래스입니다.The EventHandlerList class is an optimized list class designed to hold delegates.

클래스의 모든 이벤트는 필드를 사용 Events 하 여 각 이벤트를 처리 하는 메서드를 추적 합니다.All events in the class use the Events field to keep track of what methods are handling each event.

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

참조See also