Delegates are a powerful tool for the managed code object model designer to encapsulate method calls. They are used in two basic areas:
Event notifications – See section x.y on event conventions
Callbacks – Passed to a method so that user code can be called multiple times during execution to provide customization. The classic example of this is passing a Compare callback to a sort routine. These methods should use the “Callback” conventions