Как вы знаете, это хорошая идея называть Task.ConfigureAwait(false)
, когда вы ожидаете задачи в коде, который не требует захвата контекста синхронизации, поскольку он может вызывают взаимоблокировки в противном случае.
Хорошо, как часто вам нужно фиксировать контекст синхронизации? Я очень редко использую эту практику. В большинстве случаев я работаю с "библиотечным" кодом, который в значительной степени заставляет меня использовать Task.ConfigureAwait(false)
все время.
Итак, мой вопрос довольно прост: почему Task.ConfigureAwait(false)
не является параметром по умолчанию для задачи? Не было бы намного лучше заставить "высокоуровневый" код использовать Task.ConfigureAwait(true)
? Есть ли историческая причина для этого, или я чего-то не хватает?