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