the syntax of the GetInvocationList method: delegate [] GetInvocationList()

image_pdfimage_print
   
 

using System;

public delegate void DelegateClass();

public class Starter {
    public static void Main() {
        DelegateClass del = (DelegateClass)
        DelegateClass.Combine(new DelegateClass[] { MethodA, MethodB, MethodA, MethodB });
        del();
        foreach (DelegateClass item in
            del.GetInvocationList()) {
            Console.WriteLine(item.Method.Name + " in invocation list.");
        }
    }
    public static void MethodA() {
        Console.WriteLine("MethodA...");
    }

    public static void MethodB() {
        Console.WriteLine("MethodB...");
    }
}

    


To remove delegates from a multicast delegate, use the Remove method, the minus operator (-), or the -= assignment operator.

image_pdfimage_print
   
 

using System;

public delegate void DelegateClass();

public class Starter {
    public static void Main(){
         DelegateClass del=MethodA;
         del+=MethodB;
         del+=MethodC;
         del=del-MethodB;
         del();
     }
    public static void MethodA() {
        Console.WriteLine("MethodA...");
    }

    public static void MethodB() {
        Console.WriteLine("MethodB...");
    }

    public static void MethodC() {
        Console.WriteLine("MethodC...");
    }
}

    


Arrays of Delegates

image_pdfimage_print
   
 

using System;

public delegate void Task();

public class Starter {
    public static void Main() {
        Task[] tasks = { MethodA, MethodB, MethodC };
        string resp;
        tasks[0]();
        tasks[1]();
        tasks[2]();
    }

    public static void MethodA() {
        Console.WriteLine("Doing TaskA");
    }

    public static void MethodB() {
        Console.WriteLine("Doing TaskB");
    }

    public static void MethodC() {
        Console.WriteLine("Doing TaskC");
    }
}

    


Delegates:Multicasting

image_pdfimage_print

   


using System;

public class DelegatesMulticasting
{
    delegate void ProcessHandler(string message);
    
    static public void Process(string message)
    {
        Console.WriteLine("Test.Process("{0}")", message);
    }
    public static void Main()
    {
        User user = new User("George");
        
        ProcessHandler ph = new ProcessHandler(user.Process);
        ph = (ProcessHandler) Delegate.Combine(ph, new ProcessHandler(Process));
        
        ph("Wake Up!");        
    }
}
public class User
{
    string name;
    public User(string name)
    {
        this.name = name;
    }    
    public void Process(string message)
    {
        Console.WriteLine("{0}: {1}", name, message);
    }
}



           
          


Delegates to Instance Members

image_pdfimage_print

   


using System;

public class DelegatestoInstanceMembers
{
    delegate void ProcessHandler(string message);
    
    public static void Main()
    {
        User aUser = new User("George");
        ProcessHandler ph = new ProcessHandler(aUser.Process);
        
        ph("Wake Up!");        
    }
}

public class User
{
    string name;
    public User(string name)
    {
        this.name = name;
    }    
    public void Process(string message)
    {
        Console.WriteLine("{0}: {1}", name, message);
    }
}