Потому что
await по умолчанию пытается “вернуться” в исходный контекст выполнения. В UI это может быть полезно. Но в библиотеке это обычно лишнее и иногда даже вредное.Частая картина: внутри библиотеки есть
await, а дальше никакого UI нет. Но метод всё равно тащит контекст вызывающего кода:await http.GetStringAsync("/data");Правильнее — явно сказать: “мне не важно возвращаться в этот контекст”:
await http.GetStringAsync("/data").ConfigureAwait(false);Так библиотечный код становится более предсказуемым. Он меньше зависит от того, откуда его вызвали. И он не навязывает окружению свои ожидания.
В приложении, где после
await ты обновляешь UI, ConfigureAwait(false) может быть неуместен. Это другое правило.🔥 Меньше привязки к контексту, меньше неожиданностей, и код сразу говорит, что ему не нужен “возврат в UI”.
➡️ C# Ready | #совет
