65.9K
CodeProject is changing. Read more.
Home

Basic Events Out Of The Box

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.50/5 (2 votes)

Jan 23, 2011

CPOL

2 min read

viewsIcon

21009

downloadIcon

91

Use simple events the same way you call a method

Introduction

When working on one on my recent projects, I needed to fire an event that contains a message. I've looked for any EventArgs that contain a string property to be used as a message container, but I didn't find anything simple. So, I decided to create a set of EventArgs that contains properties I need for almost every project and put them in a separate library, so it can be reused. Then I got the idea, why not declare the event itself and its firing method in that library to be able to fire the events from my project the same way I call a method. That's the idea behind Basic Events project, out of the box usage of events containing common properties.

The Attached Code

The attached code contains a solution with the following projects:

  • BasicEvents: The main library that contains the EventArgs classes and the Events class with events defined.
  • DMO_BLL: A business tier class to demo BasicEvents library.
  • DMO_EXE: A console application that uses the DMO_BLL class.

Using the Code

In your class that you wish to fire the event

Declare private or protected attribute of Events class.

private BasicEvents.Events _events = new BasicEvents.Events();

Declare a public read only property to return the Events class instance that all the events will be fired from.

public BasicEvents.Events Events
{
get
{
return _events;
}
}   

Where you want to fire one of the basic events, just call the related method:

_events.FireMessageReceived(this, "Demo");

Fire events methods:

  • FireMessageReceived: fires MessageReceived event.
  • FireTimeMessageReceived: fires TimeMessageReceived event.
  • FireExceptionReceived: fires ExceptionReceived event.

In your presentation tier, or the class where you intend to handle the events fired:

Provided that you make instance of the business tier library:

DMO_BLL.DMO _dmo = new DMO_BLL.DMO();

Register the event handlers:

_dmo.Events.MessageReceived += 
	new BasicEvents.Events.MessageReception(Events_MessageReceived);   

Create the Events_MessageReceived method:

void Events_MessageReceived(object sender, BasicEvents.MessageEventArgs e)
{
Console.WriteLine(e.Message); 
}  

Run the business method in the business tier library:

_dmo.DemoMethod();  

Notes

The source code can be viewed under codeplex.com by clicking here.