Nasıl yapılır: (Visual Basic) engellemesini önlemek için özel olayları bildirmek
Bu bir olay işleyicisi değil sonraki olay işleyicileri engelle önemli olduğunda çeşitli durumlar vardır.Özel olaylar olay, olay işleyicileri zaman uyumsuz olarak çağırmak izin verir.
Varsayılan olarak, Yedekleme saklama alanı bir olay bildirimi için olay işleyicileri seri olarak birleştiren çok noktaya yayın bir temsilcidir.Bu, birden çok işleyicinin tamamlanması uzun zaman alıyorsa, onu tamamlanıncaya kadar bu işleyiciler engellediği anlamına gelir.(Sure olay işleyicileri hiçbir zaman uzun veya potansiyel engelleme işlemleri gerçekleştirmelisiniz.)
Varsayılan uygulama sağlayan Visual Basic olay yerine özel bir olay olay işleyicilerini zaman uyumsuz çalıştırmak için kullanabilirsiniz.
Örnek
Bu örnekte, AddHandler erişimci ekler her işleyicisi için temsilci Click olayýna bir ArrayList depolanan EventHandlerList alan.
Ne zaman, raises kod Click olay, RaiseEvent erişimci çağırır zaman uyumsuz olarak kullanarak tüm olay işleyicisi temsilciler BeginInvoke yöntemi.Bu yöntem her bir çalışan iş parçacığı işleyicisini çağırır ve işleyicileri birbirine durduramazsınız böylece hemen verir.
Public NotInheritable Class ReliabilityOptimizedControl
'Defines a list for storing the delegates
Private EventHandlerList As New ArrayList
'Defines the Click event using the custom event syntax.
'The RaiseEvent always invokes the delegates asynchronously
Public Custom Event Click As EventHandler
AddHandler(ByVal value As EventHandler)
EventHandlerList.Add(value)
End AddHandler
RemoveHandler(ByVal value As EventHandler)
EventHandlerList.Remove(value)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)
For Each handler As EventHandler In EventHandlerList
If handler IsNot Nothing Then
handler.BeginInvoke(sender, e, Nothing, Nothing)
End If
Next
End RaiseEvent
End Event
End Class
Ayrıca bkz.
Görevler
Nasıl yapılır: bellek (Visual Basic) korumak için özel olayları bildirmek