Asynchronous programming uses a single thread which will schedule a process in an asynchronous way. Program execution will continue and the UI will be responsive to the user. Typical scenario for an asynchronous programming is a long running process like data backup, bulk data processing, time consuming calculations, etc. We can schedule the time consuming work as an asynchronous task and the user can continue with his work.
For more details, please refer http://www.dotnetfunda.com/articles/article2018-asynchronous-programming-async-await.aspx