Async и await - разница между консолью, Windows Forms и ASP.NET

Я изучал асинхронное / ожидающее использование и думаю, что понял концепцию скрытого использования. Однако в большинстве учебников Channel 9, статей MSDN и ответов о переполнении стека в async / await используются приложения на основе графического интерфейса (приложение Windows Forms) для демонстрации возможностей async / await.

Однако я заметил фундаментальное различие в использовании асинхронного / ожидающего использования в приложении на основе потоков пользовательского интерфейса по сравнению с обычными приложениями на основе потоков ThreadPool (например, веб-приложение ASP.NET, консольное приложение и т. Д.).

Поскольку в приложении, основанном на потоке пользовательского интерфейса, поток пользовательского интерфейса всегда доступен (если процесс не остановлен явно или в Windows), поэтому поток ThreadPool, отвечающий за выполнение кода после «await» в любом асинхронном методе, гарантирует поиск Пользовательский интерфейс для публикации результатов обратно (если есть).

Однако в консольном приложении или веб-приложении ASP.NET основной поток (в консольном приложении) или HTTP-запрос (в веб-приложении ASP.NET) должны ожидать (в один момент времени), пока все асинхронные операции не будут выполнены. завершено. Поэтому где-то после вызова метода Async должны быть вызовы .Wait () и .Result, если больше не над чем работать.

Это понимание правильно? Я не ставлю под сомнение преимущество асинхронности операций ввода-вывода или сетевых операций (я понимаю, как это приведет к увеличению масштабируемости приложений).

Ответы на вопрос(1)

Ваш ответ на вопрос