Chapter 11. Delegates, Events, and Lambdas
Up to this point in the text, most of the applications you developed added various bits of code to
Main(), which, in some way or another, sent requests to a given object. However, many applications require that an object be able to communicate back to the entity that created it using a callback mechanism. While callback mechanisms can be used in any application, they are especially critical for graphical user interfaces in that controls (such as a button) need to invoke external methods under the correct circumstances (when the button is clicked, when the mouse enters the button surface, and so forth).
Under the .NET platform, the delegate type is the preferred means of defining and responding to callbacks ...