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