This is the base class for multicast delegates. Multicast delegates are identical to normal delegates, except that their invocation list can hold more than one method at a time. You can use Delegate.Combine() to add a method to the list and Delegate.Remove() to remove one. In C#, you can also use the + operator (or +=) to add methods. When you invoke a multicast delegate, the methods are invoked synchronously one after the other. An error in one method can prevent the delegate from calling the other methods in its list.

Multicast delegates can also be invoked asynchronously, meaning that the entire call chain is invoked serially by a single thread out of the system thread pool. If it is desirable to invoke each delegate in the chain on its own asynchronous thread instead, then use GetInvocationList() to obtain the list of delegates and asynchronously invoke each one.

public abstract class MulticastDelegate : Delegate {
// Protected Constructors
   protected method MulticastDelegate(object target, 
        string method);  
   protected method MulticastDelegate(Type target, 
        string method);  
// Public Static Methods
   public static bool operator method !=(
        MulticastDelegate d1, MulticastDelegate d2);  
   public static bool operator method ==(
        MulticastDelegate d1, MulticastDelegate d2);  
// Public Instance Methods
   public sealed override method bool Equals(object obj);       // overrides Delegate
   public sealed override method int GetHashCode();              // overrides Delegate public sealed ...

Get C# in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.