Mega Code Archive

 
Categories / C# / Language Basics
 

Shows how multiple objects may subscribe to the same event

/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */  // Subscrib.cs -- Shows how multiple objects may subscribe to the same //                event. // //                Compile this program with the following command line: //                    C:>csc Subscrib.cs using System; namespace nsEvents {     public class Subscrib     {         // Declare an instance of the clsDelegate class. The event variable         // is not static.         static public clsDelegate dlg = new clsDelegate ();         static public void Main ()         {             // Add clsMain to the event list             dlg.DoEvent += new clsDelegate.StringHandler (ShowEvent);             // Create subscribers for the event             clsSubscriber sub = new clsSubscriber ();             clsNextSubscriber sub2 = new clsNextSubscriber ();             // Fire the event.             dlg.FireEvent ("Fired from Main()");         }         static public void ShowEvent (string str)         {             Console.WriteLine ("Main handled event: " + str);         }     }     public class clsDelegate     {                  // Declare a delegate for the event         public delegate void StringHandler (string str);                  // A variable to hold the delegate         public event StringHandler DoEvent;                  // This method will trigger the event.         public void FireEvent (string str)         {             if (DoEvent != null)                 DoEvent (str);         }     }     public class clsSubscriber     {         public clsSubscriber ()         {             Subscrib.dlg.DoEvent +=                          new clsDelegate.StringHandler (SubscribeEvent);         }         public void SubscribeEvent (string str)         {             Console.WriteLine ("Subscriber handled event: " + str);         }     }     public class clsNextSubscriber     {         public clsNextSubscriber ()         {             Subscrib.dlg.DoEvent +=                          new clsDelegate.StringHandler (SubscribeEvent);         }         public void SubscribeEvent (string str)         {             Console.WriteLine ("Next Subscriber handled event: " + str);         }     } }