SynchronizationContext задаёт, куда отправлять продолжение работы. Он используется, например, для возврата к UI-потоку; обычный await учитывает текущий контекст, если он есть.
Расскажите про SynchronizationContext — что это такое, где используется?
SynchronizationContext задаёт, куда отправлять продолжение работы. Он используется, например, для возврата к UI-потоку; обычный await учитывает текущий контекст, если он есть.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
SynchronizationContext задаёт, куда отправлять продолжение работы. Он используется, например, для возврата к UI-потоку; обычный await учитывает текущий контекст, если он есть.
Контекст не равен потоку и сам по себе не является блокировкой. В UI он обычно связан с очередью одного потока; базовая реализация может направлять работу в ThreadPool.
ConfigureAwait(false) запрещает захват контекста данным await, но не обещает отдельный поток. В ASP.NET Core обычно нет специального SynchronizationContext. Блокирующие Result/Wait в UI опасны: продолжение может ждать поток, который сам заблокирован ожиданием.
Источник: devblogs.microsoft.com.