"Asynchronous" describes the type of thread execution.
Synchronous commands execute linearly and prevent subsequent instructions from executing until completed (i.e. they block). So, given the following synchronous code:
DoOneThing(); DoAnotherThing();
DoAnotherThing not executed until DoOneThing completes.
Asynchronous instructions are different in that you do not know (or sometimes even care) when they start or end execution. In this case:
DoOneAsynchronousThing(); DoAnotherThing();
The first statement initiates an asynchronous operation, then performs another thing immediately before the first operation (or perhaps even started).
There are many different mechanisms for providing asynchronous execution: the most common (at least in the .NET world) are probably ThreadPool (for asynchronous execution in the process) and Microsoft Message Queue (for interprocess asynchronous execution). For a .NET introduction, you can start with this MSDN topic, including asynchronous calls .
Thus, asynchronous delegates, methods, and events are triggered (and terminated) at undefined times and do not block the main thread of execution.
source share