Разбираем, почему блокирующие операции (ввод, диск, сеть, базы) ухудшают отзывчивость UI и «съедают» пул потоков на серверах, как их распознать и чем заменить. Практические примеры с
Console.ReadLine(),
Thread.Sleep,
HttpClient; наглядная таблица «что блокирует, а что нет» и введение в современный асинхронный подход на базе
async/
await.