/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// A .NET-compatible event.
using System;
// Derive a class from EventArgs.
class MyEventArgs : EventArgs {
public int eventnum;
}
// Declare a delegate for an event.
delegate void MyEventHandler(object source, MyEventArgs arg);
// Declare an event class.
class MyEvent {
static int count = 0;
public event MyEventHandler SomeEvent;
// This fires SomeEvent.
public void OnSomeEvent() {
MyEventArgs arg = new MyEventArgs();
if(SomeEvent != null) {
arg.eventnum = count++;
SomeEvent(this, arg);
}
}
}
class X {
public void handler(object source, MyEventArgs arg) {
Console.WriteLine("Event " + arg.eventnum +
" received by an X object.");
Console.WriteLine("Source is " + source);
Console.WriteLine();
}
}
class Y {
public void handler(object source, MyEventArgs arg) {
Console.WriteLine("Event " + arg.eventnum +
" received by a Y object.");
Console.WriteLine("Source is " + source);
Console.WriteLine();
}
}
public class EventDemo5 {
public static void Main() {
X ob1 = new X();
Y ob2 = new Y();
MyEvent evt = new MyEvent();
// Add handler() to the event list.
evt.SomeEvent += new MyEventHandler(ob1.handler);
evt.SomeEvent += new MyEventHandler(ob2.handler);
// Fire the event.
evt.OnSomeEvent();
evt.OnSomeEvent();
}
}