Aracılığıyla paylaş


Nasıl yapılır: bellek (Visual Basic) korumak için özel olayları bildirmek

Kendi bellek kullanımı bir uygulama düşük tutmak önemli olduğunda çeşitli durumlar vardır.Özel olaylar uygulama belleği yalnızca işleme olayları kullanmaya izin verir.

Bir sınıf bir olay bildirir, varsayılan olarak, derleyici olay bilgilerini saklamak bir alan için bellek ayırır.Bir sınıf çok sayıda kullanılmayan olayı varsa, bunlar gereksiz düzeyde bellek alın.

Varsayılan uygulama sağlayan Visual Basic olay yerine özel olaylar bellek kullanımı daha dikkatli bir şekilde yönetmek için kullanabilirsiniz.

Örnek

Bu örnekte, sınıfın bir örneğini kullanır EventHandlerList depolanan sınıf Events kullanımda olaylarla ilgili bilgileri depolamak için alan.EventHandlerList Temsilci bulundurmak için tasarlanmış bir en iyileştirilmiş listesi sınıfı bir sınıftır.

Sınıf kullanımında tüm olayları Events hangi yöntemleri her olay işleme izlemek için alan.

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

Ayrıca bkz.

Görevler

Nasıl yapılır: (Visual Basic) engellemesini önlemek için özel olayları bildirmek

Başvuru

EventHandlerList

Diğer Kaynaklar

Olayları (Visual Basic)