Переход от блокирующих вызовов .Result/.Wait() к сквозной асинхронности в устаревшей кодовой базе на C#
Поэтапный план удаления sync-over-async из существующей кодовой базы .NET: инвентаризация анализаторами, измерение истощения ThreadPool, перевод по одной цепочке вызовов и доведение счётчика до нуля на .NET 11.