A synchronous call means control waits till the operation is complete before moving to the next statement.
Example:
Class Main()
{
var ResultOfA = ProcessA();
ProcessB();
ProcessC();
ProcessD(ResultOfA);
}
In Asynchronous call
If you decide to call ProcessA, ProcessB and ProcessC in parallel (as only ProcessD requires ProcessA to complete to receive the parameters).
It goes like this:
Task<string> t1 = Task<string>.Factory.StartNew(() => a.ProcessA());
Task t2 = Task.Factory.StartNew(() => a.ProcessB());
Task t3 = Task.Factory.StartNew(() => a.ProcessC());
Task.WaitAll(t1, t2, t3);
a.ProcessD(t1.Result);
</string></string>
This means as soon as the method A is called, the control, without waiting for its completion, executes the next line which is to processB and same happens untill it reaches the statement Task.WaitAll() which forces the control to wait till all the three methods complete before executing the fourth method ProcessD.