Что такое ConfigureAwait?
Что такое ConfigureAwait?

Видео: Что такое ConfigureAwait?

Видео: Что такое ConfigureAwait?
Видео: Егор Гришечко «Async/Await и всё, что вы боялись спросить» 2024, Ноябрь
Anonim

ConfigureAwait (false) включает в себя задачу, которая уже завершена к моменту ее ожидания (что на самом деле невероятно распространено), тогда ConfigureAwait (false) будет бессмысленным, поскольку поток продолжает выполнять код в методе после этого и все еще в том же контексте, который был там ранее.

Впоследствии можно также спросить, а какой смысл в ConfigureAwait false?

ConfigureAwait ( ложный ) настраивает задачу таким образом, чтобы продолжение после ожидания не выполнялось в контексте вызывающей стороны, что позволяет избежать любых возможных взаимоблокировок.

Кроме того, что такое SynchronizationContext? SynchronizationContext представляет собой представление текущей среды, в которой выполняется наш код. То есть в асинхронной программе, когда мы делегируем единицу работы другому потоку, мы фиксируем текущую среду и сохраняем ее в экземпляре SynchronizationContext и поместите его на объект Task.

Принимая это во внимание, какова польза от ConfigureAwait?

С использованием ConfigureAwait (false) во избежание тупиковых ситуаций - опасная практика. Вам придется использовать ConfigureAwait (false) для каждого ожидания в транзитивном закрытии всех методов, вызываемых блокирующим кодом, включая весь сторонний и сторонний код. С использованием ConfigureAwait (false) во избежание тупика - в лучшем случае просто взлом).

Что такое GetAwaiter?

GetAwaiter (), который возвращает экземпляр, имеющий метод GetResult (). При использовании для неисправной Задачи GetResult () будет распространять исходное исключение (именно так «ожидающая задача;» получает свое поведение). GetResult (), потому что он сохраняет исключения задач вместо того, чтобы заключать их в AggregateException.

Рекомендуемые: