Simplest event delegate ever






2.14/5 (5 votes)
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:
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:
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:
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
.