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