<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2Fdelegate%2Fdelegate_event</id>
		<title>Csharp/CSharp Tutorial/delegate/delegate event - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2Fdelegate%2Fdelegate_event"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/delegate/delegate_event&amp;action=history"/>
		<updated>2026-04-30T05:47:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/delegate/delegate_event&amp;diff=6582&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/delegate/delegate_event&amp;diff=6582&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/delegate/delegate_event&amp;diff=6583&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/delegate/delegate_event&amp;diff=6583&amp;oldid=prev"/>
				<updated>2010-05-26T12:19:58Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Advanced Event==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
delegate void NameChangedDelegate(string name, string newValue);&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        Employee c = new Employee();&lt;br /&gt;
        Subscriber s1 = new Subscriber(c, &amp;quot;subscriber-A&amp;quot;);&lt;br /&gt;
        Subscriber s2 = new Subscriber(c, &amp;quot;subscriber-B&amp;quot;);&lt;br /&gt;
        Subscriber s3 = new Subscriber(c, &amp;quot;subscriber-C&amp;quot;);&lt;br /&gt;
        c.FirstName = &amp;quot;F&amp;quot;;&lt;br /&gt;
        s2.Unsubscribe();&lt;br /&gt;
        c.FirstName = &amp;quot;A&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Subscriber&lt;br /&gt;
{&lt;br /&gt;
    public string SubscriberID = &amp;quot;new subscriber&amp;quot;;&lt;br /&gt;
    public Employee myEmployee = null;&lt;br /&gt;
    public NameChangedDelegate ncDel = null;&lt;br /&gt;
    public Subscriber(Employee c, string subId)&lt;br /&gt;
    {&lt;br /&gt;
        SubscriberID = subId;&lt;br /&gt;
        ncDel = new NameChangedDelegate(myEmployee_OnNameChanged);&lt;br /&gt;
        myEmployee = c;&lt;br /&gt;
        myEmployee.OnNameChanged += ncDel;&lt;br /&gt;
    }&lt;br /&gt;
    void myEmployee_OnNameChanged(string name, string newValue)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;[{0}] Employee {1} changed to {2}.&amp;quot;, SubscriberID,&lt;br /&gt;
            name, newValue);&lt;br /&gt;
    }&lt;br /&gt;
    public void Unsubscribe()&lt;br /&gt;
    {&lt;br /&gt;
        myEmployee.OnNameChanged -= ncDel;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Employee&lt;br /&gt;
{&lt;br /&gt;
    private string firstName;&lt;br /&gt;
    private event NameChangedDelegate onNameChange;&lt;br /&gt;
    public event NameChangedDelegate OnNameChanged&lt;br /&gt;
    {&lt;br /&gt;
        add&lt;br /&gt;
        {&lt;br /&gt;
            onNameChange += value;&lt;br /&gt;
            if (value.Target is Subscriber)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Subscriber &amp;quot;{0}&amp;quot; just subscribed to OnNameChanged.&amp;quot;,&lt;br /&gt;
                    ((Subscriber)value.Target).SubscriberID);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        remove&lt;br /&gt;
        {&lt;br /&gt;
            onNameChange -= value;&lt;br /&gt;
            if (value.Target is Subscriber)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Subscriber &amp;quot;{0}&amp;quot; just un-subscribed from OnNameChanged.&amp;quot;,&lt;br /&gt;
                    ((Subscriber)value.Target).SubscriberID);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public string FirstName&lt;br /&gt;
    {&lt;br /&gt;
        get { return firstName; }&lt;br /&gt;
        set&lt;br /&gt;
        {&lt;br /&gt;
            firstName = value;&lt;br /&gt;
            onNameChange(&amp;quot;firstname&amp;quot;, value);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==An event multicast demonstration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
 &lt;br /&gt;
delegate void MyEventHandler(); &lt;br /&gt;
 &lt;br /&gt;
class MyEvent { &lt;br /&gt;
  public event MyEventHandler SomeEvent; &lt;br /&gt;
 &lt;br /&gt;
  public void OnSomeEvent() { &lt;br /&gt;
    if(SomeEvent != null) &lt;br /&gt;
      SomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MouseEvent { &lt;br /&gt;
  public void MouseEventHandler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event received by MouseEventHandler object&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class KeyEvent { &lt;br /&gt;
  public void KeyEventHandler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event received by KeyEventHandler object&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MainClass { &lt;br /&gt;
  static void handler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event received by EventDemo&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public static void Main() {  &lt;br /&gt;
    MyEvent evt = new MyEvent(); &lt;br /&gt;
    MouseEvent xOb = new MouseEvent(); &lt;br /&gt;
    KeyEvent yOb = new KeyEvent(); &lt;br /&gt;
 &lt;br /&gt;
    evt.SomeEvent += handler; &lt;br /&gt;
    evt.SomeEvent += xOb.MouseEventHandler; &lt;br /&gt;
    evt.SomeEvent += yOb.KeyEventHandler; &lt;br /&gt;
 &lt;br /&gt;
    evt.OnSomeEvent(); &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
 &lt;br /&gt;
    evt.SomeEvent -= xOb.MouseEventHandler; &lt;br /&gt;
    evt.OnSomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Event received by EventDemo&lt;br /&gt;
Event received by MouseEventHandler object&lt;br /&gt;
Event received by KeyEventHandler object&lt;br /&gt;
Event received by EventDemo&lt;br /&gt;
Event received by KeyEventHandler object&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A static method is used as an event handler==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
 &lt;br /&gt;
delegate void MyEventHandler(); &lt;br /&gt;
 &lt;br /&gt;
class MyEvent { &lt;br /&gt;
  public event MyEventHandler SomeEvent; &lt;br /&gt;
 &lt;br /&gt;
  public void OnSomeEvent() { &lt;br /&gt;
    if(SomeEvent != null) &lt;br /&gt;
      SomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class KeyEvent { &lt;br /&gt;
 &lt;br /&gt;
  public static void KeyEventHandler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event received by class.&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MainClass { &lt;br /&gt;
  public static void Main() {  &lt;br /&gt;
    MyEvent evt = new MyEvent(); &lt;br /&gt;
 &lt;br /&gt;
    evt.SomeEvent += KeyEvent.KeyEventHandler; &lt;br /&gt;
 &lt;br /&gt;
    evt.OnSomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Event received by class.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A very simple event demonstration.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
 &lt;br /&gt;
delegate void MyEventHandler(); &lt;br /&gt;
 &lt;br /&gt;
class MyEvent { &lt;br /&gt;
  public event MyEventHandler SomeEvent; &lt;br /&gt;
 &lt;br /&gt;
  public void OnSomeEvent() { &lt;br /&gt;
    if(SomeEvent != null) &lt;br /&gt;
      SomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MainClass { &lt;br /&gt;
  static void handler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event occurred&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public static void Main() {  &lt;br /&gt;
    MyEvent evt = new MyEvent(); &lt;br /&gt;
 &lt;br /&gt;
    evt.SomeEvent += handler; &lt;br /&gt;
 &lt;br /&gt;
    evt.OnSomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Event occurred&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating an event.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
public delegate void AgeChangeHandler(int age, object obj,&lt;br /&gt;
        ref bool dontdoit);&lt;br /&gt;
class Employee {&lt;br /&gt;
    public event AgeChangeHandler AgeChange;&lt;br /&gt;
    int fAge;&lt;br /&gt;
    public int Age {&lt;br /&gt;
        set {&lt;br /&gt;
            Boolean dontdoit = false;&lt;br /&gt;
            AgeChange(value, this, ref dontdoit);&lt;br /&gt;
            if (!dontdoit)&lt;br /&gt;
                fAge = value;&lt;br /&gt;
        }&lt;br /&gt;
        get {&lt;br /&gt;
            return fAge;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public Employee() {&lt;br /&gt;
        fAge = 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class MainClass {&lt;br /&gt;
    private static void MyAgeChangeHandler(int age, object obj,&lt;br /&gt;
          ref bool dontdoit) {&lt;br /&gt;
        Console.WriteLine(&lt;br /&gt;
           &amp;quot;MyAgeChangeHandler called with age {0} obj.age = {1}&amp;quot;,&lt;br /&gt;
              age, ((Employee)obj).Age);&lt;br /&gt;
        if (age &amp;lt; 0 || age &amp;gt; 99)&lt;br /&gt;
            dontdoit = true;&lt;br /&gt;
    }&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Employee p = new Employee();&lt;br /&gt;
        // Set up our handler&lt;br /&gt;
        p.AgeChange += new AgeChangeHandler(MyAgeChangeHandler);&lt;br /&gt;
        p.Age = 21;&lt;br /&gt;
        p.Age = 33;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating a new event.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
public class EventTestClass {&lt;br /&gt;
    private int nValue;&lt;br /&gt;
    public delegate void ValueChangedEventHandler();&lt;br /&gt;
    public event ValueChangedEventHandler Changed;&lt;br /&gt;
    protected virtual void OnChanged() {&lt;br /&gt;
        if (Changed != null)&lt;br /&gt;
            Changed();&lt;br /&gt;
        else&lt;br /&gt;
            Console.WriteLine(&amp;quot;Event fired. No handler!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public EventTestClass(int nValue) {&lt;br /&gt;
        SetValue(nValue);&lt;br /&gt;
    }&lt;br /&gt;
    public void SetValue(int nV) {&lt;br /&gt;
        if (nValue != nV) {&lt;br /&gt;
            nValue = nV;&lt;br /&gt;
            OnChanged();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        EventTestClass etc = new EventTestClass(3);&lt;br /&gt;
        etc.SetValue(5);&lt;br /&gt;
        etc.SetValue(5);&lt;br /&gt;
        etc.SetValue(3);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==delegate and event==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
public delegate void EventHandler(int i);&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
  static void Main(string[] args)&lt;br /&gt;
  {&lt;br /&gt;
    MyEventPublisher EventPublisher = new MyEventPublisher();&lt;br /&gt;
    &lt;br /&gt;
    EventHandler MyAnonymousDelegate = delegate(int x)&lt;br /&gt;
    {&lt;br /&gt;
      Console.WriteLine(&amp;quot;Anonymous Event FIRED!&amp;quot;);&lt;br /&gt;
    };&lt;br /&gt;
    EventPublisher.MyEvent += MyAnonymousDelegate;&lt;br /&gt;
    &lt;br /&gt;
    EventPublisher.DoSomething();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
public class MyEventPublisher&lt;br /&gt;
{&lt;br /&gt;
  public event EventHandler MyEvent;&lt;br /&gt;
  public int DoSomething()&lt;br /&gt;
  {&lt;br /&gt;
    MyEvent(5);&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Anonymous Event FIRED!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Individual objects receive notifications when instance event handlers are used==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
 &lt;br /&gt;
delegate void MyEventHandler(); &lt;br /&gt;
 &lt;br /&gt;
class MyEvent { &lt;br /&gt;
  public event MyEventHandler SomeEvent; &lt;br /&gt;
 &lt;br /&gt;
  public void OnSomeEvent() { &lt;br /&gt;
    if(SomeEvent != null) &lt;br /&gt;
      SomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class KeyEvent { &lt;br /&gt;
  int id; &lt;br /&gt;
 &lt;br /&gt;
  public KeyEvent(int x) { &lt;br /&gt;
     id = x; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public void KeyEventHandler() { &lt;br /&gt;
    Console.WriteLine(&amp;quot;Event received by object &amp;quot; + id); &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MainClass { &lt;br /&gt;
  public static void Main() {  &lt;br /&gt;
    MyEvent evt = new MyEvent(); &lt;br /&gt;
    KeyEvent o1 = new KeyEvent(1); &lt;br /&gt;
    KeyEvent o2 = new KeyEvent(2); &lt;br /&gt;
    KeyEvent o3 = new KeyEvent(3); &lt;br /&gt;
 &lt;br /&gt;
    evt.SomeEvent += o1.KeyEventHandler; &lt;br /&gt;
    evt.SomeEvent += o2.KeyEventHandler; &lt;br /&gt;
    evt.SomeEvent += o3.KeyEventHandler; &lt;br /&gt;
 &lt;br /&gt;
    evt.OnSomeEvent(); &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Event received by object 1&lt;br /&gt;
Event received by object 2&lt;br /&gt;
Event received by object 3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retrieving Even-Numbered Events==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
   &lt;br /&gt;
public delegate void EvenNumberHandler(int Number);&lt;br /&gt;
   &lt;br /&gt;
class Counter&lt;br /&gt;
{&lt;br /&gt;
    public event EvenNumberHandler OnEvenNumber;&lt;br /&gt;
   &lt;br /&gt;
    public Counter()&lt;br /&gt;
    {&lt;br /&gt;
        OnEvenNumber = null;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public void CountTo100()&lt;br /&gt;
    {&lt;br /&gt;
        int CurrentNumber;&lt;br /&gt;
   &lt;br /&gt;
        for(CurrentNumber = 0; CurrentNumber &amp;lt;= 100; CurrentNumber++)&lt;br /&gt;
        {&lt;br /&gt;
            if(CurrentNumber % 2 == 0)&lt;br /&gt;
            {&lt;br /&gt;
                if(OnEvenNumber != null)&lt;br /&gt;
                {&lt;br /&gt;
                    OnEvenNumber(CurrentNumber);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class EvenNumberHandlerClass&lt;br /&gt;
{&lt;br /&gt;
    public void EvenNumberFound(int EvenNumber)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(EvenNumber);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Counter MyCounter = new Counter();&lt;br /&gt;
        EvenNumberHandlerClass MyEvenNumberHandlerClass = new EvenNumberHandlerClass();&lt;br /&gt;
        MyCounter.OnEvenNumber += new EvenNumberHandler(MyEvenNumberHandlerClass.EvenNumberFound);&lt;br /&gt;
        MyCounter.CountTo100();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retrieving Even-Numbered Events with the .NET Delegate Convention==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
   &lt;br /&gt;
public delegate void EvenNumberHandler(object Originator, OnEvenNumberEventArgs EvenNumberEventArgs);&lt;br /&gt;
   &lt;br /&gt;
class Counter&lt;br /&gt;
{&lt;br /&gt;
    public event EvenNumberHandler OnEvenNumber;&lt;br /&gt;
   &lt;br /&gt;
    public Counter()&lt;br /&gt;
    {&lt;br /&gt;
        OnEvenNumber = null;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public void CountTo100()&lt;br /&gt;
    {&lt;br /&gt;
        int CurrentNumber;&lt;br /&gt;
   &lt;br /&gt;
        for(CurrentNumber = 0; CurrentNumber &amp;lt;= 100; CurrentNumber++)&lt;br /&gt;
        {&lt;br /&gt;
            if(CurrentNumber % 2 == 0)&lt;br /&gt;
            {&lt;br /&gt;
                if(OnEvenNumber != null)&lt;br /&gt;
                {&lt;br /&gt;
                    OnEvenNumberEventArgs EventArguments;&lt;br /&gt;
   &lt;br /&gt;
                    EventArguments = new OnEvenNumberEventArgs(CurrentNumber);&lt;br /&gt;
                    OnEvenNumber(this, EventArguments);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
public class OnEvenNumberEventArgs : EventArgs&lt;br /&gt;
{&lt;br /&gt;
    private int EvenNumber;&lt;br /&gt;
   &lt;br /&gt;
    public OnEvenNumberEventArgs(int EvenNumber)&lt;br /&gt;
    {&lt;br /&gt;
        this.EvenNumber = EvenNumber;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public int Number&lt;br /&gt;
    {&lt;br /&gt;
        get&lt;br /&gt;
        {&lt;br /&gt;
            return EvenNumber;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class EvenNumberHandlerClass&lt;br /&gt;
{&lt;br /&gt;
    public void EvenNumberFound(object Originator, OnEvenNumberEventArgs EvenNumberEventArgs)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(EvenNumberEventArgs.Number);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Counter MyCounter = new Counter();&lt;br /&gt;
        EvenNumberHandlerClass MyEvenNumberHandlerClass = new EvenNumberHandlerClass();&lt;br /&gt;
        MyCounter.OnEvenNumber += new EvenNumberHandler(MyEvenNumberHandlerClass.EvenNumberFound);&lt;br /&gt;
        MyCounter.CountTo100();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using The Event Keyword==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
    public class MyEventArgs : EventArgs&lt;br /&gt;
    {&lt;br /&gt;
        public readonly int Hour;&lt;br /&gt;
        public readonly int Minute;&lt;br /&gt;
        public readonly int Second;&lt;br /&gt;
        public MyEventArgs(int hour, int minute, int second)&lt;br /&gt;
        {&lt;br /&gt;
            this.Hour = hour;&lt;br /&gt;
            this.Minute = minute;&lt;br /&gt;
            this.Second = second;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public delegate void MyHandler(object clock,MyEventArgs timeInformation);&lt;br /&gt;
    public class Clock&lt;br /&gt;
    {&lt;br /&gt;
        private int hour;&lt;br /&gt;
        private int minute;&lt;br /&gt;
        private int second;&lt;br /&gt;
        public event MyHandler SecondChanged;&lt;br /&gt;
        protected virtual void OnSecondChanged(MyEventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            if (SecondChanged != null)&lt;br /&gt;
            {&lt;br /&gt;
                SecondChanged(this, e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        public void Run()&lt;br /&gt;
        {&lt;br /&gt;
            for (; ; )&lt;br /&gt;
            {&lt;br /&gt;
                System.DateTime dt = System.DateTime.Now;&lt;br /&gt;
                if (dt.Second != second){&lt;br /&gt;
                    MyEventArgs timeInformation =new MyEventArgs(dt.Hour, dt.Minute, dt.Second);&lt;br /&gt;
                    OnSecondChanged(timeInformation);&lt;br /&gt;
                }&lt;br /&gt;
                this.second = dt.Second;&lt;br /&gt;
                this.minute = dt.Minute;&lt;br /&gt;
                this.hour = dt.Hour;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class ConsoleHandler&lt;br /&gt;
    {&lt;br /&gt;
        public void Register(Clock theClock)&lt;br /&gt;
        {&lt;br /&gt;
            theClock.SecondChanged += new MyHandler(TimeHasChanged);&lt;br /&gt;
        }&lt;br /&gt;
        public void TimeHasChanged(object theClock, MyEventArgs ti)&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Current Time: {0}:{1}:{2}&amp;quot;,ti.Hour.ToString(),ti.Minute.ToString(),ti.Second.ToString());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Test&lt;br /&gt;
    {&lt;br /&gt;
        public static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            Clock theClock = new Clock();&lt;br /&gt;
            ConsoleHandler dc = new ConsoleHandler();&lt;br /&gt;
            dc.Register(theClock);&lt;br /&gt;
            theClock.Run();&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>