/* 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); } } }