Aracılığıyla paylaş


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

Başvuru

ArrayList

BeginInvoke

Diğer Kaynaklar

Olayları (Visual Basic)