What is Asynchronous Programming ?
-> Asynchronous programming maximizes utilization of resources on multicore systems, by allowing units of work to be separated and completed.
-> It frees up the calling system, especially a user interface, as to not wait for long operations.
-> Async and await simplify asynchronous programming
-> Async and await allow asynchronous code to resemble the structure of synchronous code.
-> The async keyword instructs the compiler to allow await.
-> Methods marked with async may return Task<T>
-> The await keyword instructs the method to return.
-> The await keyword instructs the complier to resume execution within the same context after the operation is complete.