Метод 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