Основная цель асинхронных вызовов — избавить пользователя от мучительного ожидания, когда интерфейс приложения «зависает» на время выполнения длительной операции. Синхронное выполнение означает, что пока одна задача не будет завершена, другая не начнется. Если такая задача выполняется на стороне клиента, например, формирование отчета с большим количеством диаграмм или обращение к веб-сервису, пользователь не может взаимодействовать с программой, что вызывает раздражение и снижает продуктивность.
Асинхронность меняет этот подход. Она позволяет запустить длительную операцию и, не дожидаясь ее завершения, продолжить работу с интерфейсом. Система как бы говорит пользователю: «Я начала выполнять твою задачу и сообщу, когда закончу, а пока ты можешь заниматься другими делами». Это достигается за счет того, что операция выполняется в параллельном потоке, не блокируя основной поток пользовательского интерфейса.