задачу, которая уже выполнена к моменту ожидания (что на самом деле происходит довольно часто), тогда использование ConfigureAwait(false) будет бессмысленным"
А в каком случае таска не успеет выполнится (при конструкции async/await) и что, в принципе, будет?
ну самое очевидно это ссылка на нулл
Тут речь про то, что есть вероятность, что асинхронная операция будет выполнена в новом контексте. В свою очередь ConfigureAwait(false) гарантирует, что задача выполнится в том же контексте. И часто бывает, что асинхронная операция просто выполняется синхронно и поэтому гарантировать сохранение контекста бессмысленно.
Разве если я пишу await FooAsync() то я автоматом не сохраняю контекст (Эквивалент configureAwait(true))? ConfigureAwait(false), вроде как, говорит, что "мне пофиг на контекст и его не нужно сохранить". Не?
await разве что инкапсулирует https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.getawaiter?view=net-5.0
Я уже сам запутался. Ещё раз перечитал. Вроде ты прав
Вообще есть полная статья от Тоуба, по ней вопросов не должно возникнуть https://devblogs.microsoft.com/dotnet/configureawait-faq/
Обсуждают сегодня