TGViewer
Библиотека собеса по C# | вопросы с собеседований Библиотека собеса по C# | вопросы с собеседований @csharp_interview_lib · 5.65K subscribers
Post #1005 2.08K
Объясните, что реально происходит при async/await в C#: как компилятор трансформирует метод, как выбирается поток для продолжения, что делает ConfigureAwait(false), и почему в UI/старом ASP.NET ловят дедлок при .Result/.Wait().

Компилятор разворачивает метод в IAsyncStateMachine: локальные и позиция сохраняются в полях, await берёт awaiter (обычно TaskAwaiter) и через OnCompleted/UnsafeOnCompleted регистрирует продолжение. По умолчанию продолжение постится в текущий SynchronizationContext (если он есть), иначе — в TaskScheduler.Current (обычно пул потоков). ConfigureAwait(false) отключает захват контекста, поэтому продолжение уходит в пул и не требует возвращения в UI-контекст. Дедлок появляется, когда однопоточный контекст (WinForms/WPF или классический ASP.NET) блокируется .Result/.Wait(), а продолжение пытается вернуться в тот же контекст, который занят блокирующим ожиданием; ни то ни другое не сдвигается. Лекарство: не блокировать асинхронщину (“async all the way”), в библиотечном коде использовать ConfigureAwait(false) там, где не нужен контекст, и передавать CancellationToken.

Библиотека собеса по С#
  • ❤ 9
More from @csharp_interview_lib
  1. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября (уже завтра!) в…
  2. Sep 15, 2026Когда выбирать struct/record struct вместо class? Для маленьких, неизменяемых и часто копи…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 9, 2026RabbitMQ в Production: Transactional Outbox, идемпотентность и DLQ в ASP.NET Core Отправит…
  5. Sep 7, 2026⚡️⚡️Актуальные темы .NET на DotNext 2026 В .NET одновременно происходит много интересного:…
  6. Aug 4, 2026Долгоживущий .NET-сервис постепенно “распухает” по памяти без явных LOH-пиков. В дампе вид…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →