Multicast Delegate
Imports System Public Class MainClass Shared Sub Main( ) Dim Writer, Logger As _ MyClassWithDelegate.StringDelegate Dim myMulticastDelegate As MyClassWithDelegate.StringDelegate Writer = New MyClassWithDelegate.StringDelegate( _ AddressOf MyImplementingClass.WriteString) Logger = New MyClassWithDelegate.StringDelegate( _ AddressOf MyImplementingClass.LogString) Dim arr( ) As MyClassWithDelegate.StringDelegate = _ {Writer, Logger} Writer("String passed to Writer" & vbCrLf) Logger("String passed to Logger" & vbCrLf) Console.WriteLine(vbCrLf & "myMulticastDelegate = " + _ "Writer and Logger") myMulticastDelegate = _ DirectCast(System.Delegate.Combine(arr), _ MyClassWithDelegate.StringDelegate) myMulticastDelegate("First string passed to Collector") Console.WriteLine(vbCrLf & _ "myMulticastDelegate Adds Transmitter") Console.WriteLine(vbCrLf & "myMulticastDelegate -= Logger") myMulticastDelegate = _ DirectCast(System.Delegate.Remove(myMulticastDelegate, _ Logger), MyClassWithDelegate.StringDelegate) myMulticastDelegate("Third string passed to Collector") End Sub 'Main End Class Public Class MyClassWithDelegate Public Delegate Sub StringDelegate(ByVal s As String) End Class Public Class MyImplementingClass Public Shared Sub WriteString(ByVal s As String) Console.WriteLine("Writing string {0}", s) End Sub Public Shared Sub LogString(ByVal s As String) Console.WriteLine("Logging string {0}", s) End Sub End Class