Класс Task
Task - обещание завершения работы.
await снимает результат и
пробрасывает исключение напрямую.
Result и
Wait
оборачивают сбой в
AggregateException. Запуск в
пуле -
Run,
готовая задача -
CompletedTask.
Синтаксис
using System.Threading.Tasks;
Task work = Task.Run(() => { });
int value = await Task.FromResult(12345);
Пример
Давайте дождёмся готовой задачи через
await:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
int res = await Task.FromResult(12345);
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте запустим вычисление через
Run:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
int res = await Task.Run(() => 12345);
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте проверим уже завершённую
CompletedTask:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
await Task.CompletedTask;
bool res = Task.CompletedTask.IsCompletedSuccessfully;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
WhenAll,
ждать несколько задач -
метод
FromResult,
задача с готовым значением -
свойство
Status,
этап выполнения -
async-лямбда,
функция, возвращающая задачу