Click here to Skip to main content
15,897,968 members
Articles / Programming Languages / C#

Simplest event delegate ever

Rate me:
Please Sign up or sign in to vote.
2.14/5 (5 votes)
10 Oct 2006CPOL 24.1K   170   10   2
The simplest sample of how an event delegate can be used in C#.

Introduction

Check out this simple event delegate code. First, you have a source which generates an event:

C#
using System;
using System.Collections.Generic;
using System.Text;

namespace eventDelegate
{
    class Source
    {
        public event EventHandler SomeEvent; 
        // this event is of type EventHandler, 
        // meaning it can notify any function whose signature is like the 
        // one of EventHandler EventHandler is the delegate

        public void RaiseEvent()
        {
            if (null != SomeEvent) // to avoid exceptions when event 
            {                      // delegate wiring is not done
                SomeEvent(this, null);
            }
        }
    }
}

Next, you have a receiver which is supposed to get a notification of the event:

C#
using System;
using System.Collections.Generic;
using System.Text;

namespace eventDelegate
{
    class Receiver
    {
        public void NotifyMe(object source, EventArgs e)
        {
            Console.WriteLine("I am notified by "+source.GetType());
        }
    }
}

Then you have the main program which does the wiring:

C#
using System;
using System.Collections.Generic;
using System.Text;

namespace eventDelegate
{
    class Program
    {
        static void Main(string[] args)
        {
            Source theSource = new Source();
            Receiver theReceiver = new Receiver();

            theSource.SomeEvent += new EventHandler(theReceiver.NotifyMe);

            theSource.RaiseEvent();
        }
    }
}

As simple as that. It can now be extended to include custom event data and therefore a new class inheriting from EventArgs and therefore ending up with a new delegate which can handle this new EventArgs.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralGreat! Pin
Hatrick9-Jan-07 3:34
Hatrick9-Jan-07 3:34 
GeneralYou may want to reference my article Pin
Todd Wilder16-Oct-06 8:21
Todd Wilder16-Oct-06 8:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.