Csharp/C Sharp/Services Event/System Event

Материал из .Net Framework эксперт
Версия от 14:39, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

A .NET-compatible event

<source lang="csharp"> /* 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(); 
 } 

}


      </source>