При await .NET по умолчанию старается продолжить выполнение в захваченном контексте. Например, в UI-приложении это позволяет после await снова работать с UI-потоком. Но библиотеке обычно всё равно, в каком контексте продолжать работу. Поэтому там часто пишут:
var data = await httpClient
.GetStringAsync(url)
.ConfigureAwait(false);
ConfigureAwait(false) говорит: не нужно возвращать продолжение в исходный контекст.
Есть и классический сценарий с deadlock:
var result = GetDataAsync().Result;
Если GetDataAsync() после await пытается вернуться в занятый контекст, продолжение не может выполниться, а .Result не может завершиться.
В ASP.NET Core собственного SynchronizationContext для запросов нет, поэтому классическая проблема с .Result и захватом контекста там не возникает по этой причине.
#il_люминатор


