Raising and handling events
Methods are often described as actions that an object can perform, either on itself or on related objects. For example, List<T>
can add an item to itself or clear itself, and File
can create or delete a file in the filesystem.
Events are often described as actions that happen to an object. For example, in a user interface, Button
has a Click
event, a click being something that happens to a button, and FileSystemWatcher
listens to the filesystem for change notifications and raises events like Created
and Deleted
that are triggered when a directory or file changes.
Another way of thinking of events is that they provide a way of exchanging messages between two objects.
Events are built on delegates, so let's start by having a look at what delegates are and how they work.
Calling methods using delegates
You have already seen the most common way to call or execute a method: use the .
operator to access the method using its name...