Great explanation of Events and Delegates in C#