Метод Yield
await Task.Yield позволяет
продолжить метод позже, не блокируя
поток. После yield удобно продолжить
работу. Пауза по времени -
Delay
с TimeSpan.Zero или большим
интервалом.
Синтаксис
await Task.Yield();
Пример
Давайте выполним код после
Yield:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
await Task.Yield();
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте два раза подряд отдать ход:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
await Task.Yield();
await Task.Yield();
Console.WriteLine("12345");
}
}
Результат выполнения кода:
"12345"
Пример
Давайте проверить, что задача после
Yield завершилась:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.Yield();
await task;
bool res = task.IsCompletedSuccessfully;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
Delay,
ожидание по таймеру -
метод
Run,
код в пуле потоков -
метод
ConfigureAwait,
где продолжать послеawait -
Task,
класс, где объявленYield