Csharp/C Sharp/Services Event/System Event

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

A .NET-compatible event

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