Mega Code Archive

 
Categories / VB.Net / Language Basics
 

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