Nasıl yapılır: Bellekten Kazanacak Şekilde Özel Olayları Bildirme (Visual Basic)
Bir uygulamanın bellek kullanımını düşük tutmanın önemli olduğu birkaç durum vardır. Özel olaylar, uygulamanın yalnızca işlediği olaylar için bellek kullanmasına olanak sağlar.
Varsayılan olarak, bir sınıf bir olay bildirdiğinde, derleyici olay bilgilerini depolamak için bir alana bellek ayırır. Bir sınıfta kullanılmayan çok sayıda olay varsa, gereksiz bir şekilde belleği kaplar.
Visual Basic'in sağladığı olayların varsayılan uygulamasını kullanmak yerine özel olayları kullanarak bellek kullanımını daha dikkatli yönetebilirsiniz.
Örnek
Bu örnekte, sınıfı, kullanılan olaylar hakkındaki bilgileri depolamak için sınıfında depolanan Events
bir örneğini EventHandlerList kullanır. EventHandlerList sınıfı, temsilcileri tutmak için tasarlanmış iyileştirilmiş bir liste sınıfıdır.
sınıfındaki tüm olaylar, her olayı işleyen yöntemleri izlemek için alanını kullanır 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
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin