Метод Wait
Task.Wait дожидается конца задачи
без await. На успешной
FromResult
просто возвращается. При сбое бросает
AggregateException, как
Result.
Синтаксис
task.Wait();
Пример
Давайте дождаться готовой задачи:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromResult(12345);
task.Wait();
bool res = task.IsCompletedSuccessfully;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте прочитать результат после
Wait:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromResult(12345);
task.Wait();
int res = task.Result;
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте поймать AggregateException
на сбойной задаче:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromException(
new InvalidOperationException("abcde"));
try
{
task.Wait();
}
catch (AggregateException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
свойство
Result,
забрать значение после ожидания -
метод
WhenAll,
ждать несколько задач асинхронно -
метод
ConfigureAwait,
асинхронное продолжение -
Task,
класс, где объявленWait