See the EventHandler entry for details regarding the EventArgs / EventHandler idiom for delegates in .NET. If .NET developers wish to follow this idiom, they should create new subtypes of EventArgs for each new collection of data to be sent to interested parties; otherwise , they should pass Empty , indicating that no event data is to be passed as part of this event notification. public class EventArgs { // Public Constructors public EventArgs ( ); // Public Static Fields public static readonly EventArgs Empty ; // =System.EventArgs } SubclassesMultiple types Passed ToEventHandler.{BeginInvoke( ) , Invoke( )} |