Asynchronous Programming Design Patterns
There are a number of ways to expose asynchronous features to client code. The Event-based Asynchronous Pattern prescribes one recommended way for classes to present asynchronous behavior.
Starting with the .NET Framework version 4, the Task Parallel Library provides a new model for asynchronous and parallel programming. For more information, see Parallel Programming in the .NET Framework.