Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1180 of 1492 menu
◀ ▶

Метод ConfigureAwait

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

Синтаксис

await task.ConfigureAwait(false); await task.ConfigureAwait(true);

Пример

Давайте дождаться значения с ConfigureAwait(false):

using System; using System.Threading.Tasks; class Program { static async Task Main() { int res = await Task.FromResult(12345) .ConfigureAwait(false); Console.WriteLine(res); } }

Результат выполнения кода:

12345

Пример

Давайте сравнить с обычным await:

using System; using System.Threading.Tasks; class Program { static async Task Main() { int plain = await Task.FromResult(12345); int cfg = await Task.FromResult(12345) .ConfigureAwait(false); bool res = plain == cfg; Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте применить к строке:

using System; using System.Threading.Tasks; class Program { static async Task Main() { string res = await Task.FromResult("abcde") .ConfigureAwait(false); Console.WriteLine(res); } }

Результат выполнения кода:

"abcde"

Смотрите также

  • метод Yield,
    отложить продолжение
  • метод FromResult,
    готовая задача в примере
  • async-лямбда,
    await внутри делегата
  • Task,
    класс, где доступен awaitable
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить