Multithreaded Programming with the Event-based Asynchronous Pattern
.NET Framework 4.5
There are a number of ways to expose asynchronous features to client code. The Event-based Asynchronous Pattern prescribes the recommended way for classes to present asynchronous behavior.