Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1177 of 1492 menu
◀ ▶

Свойство Result

Task<T>.Result блокирует поток, пока задача не завершится. При сбое бросает AggregateException, а await - исходное исключение. Успешное значение даёт FromResult.

Синтаксис

int value = task.Result;

Пример

Давайте прочитаем Result у готовой задачи:

using System; using System.Threading.Tasks; class Program { static async Task Main() { var task = Task.FromResult(12345); await task; int res = task.Result; Console.WriteLine(res); } }

Результат выполнения кода:

12345

Пример

Давайте сравнить await и Result:

using System; using System.Threading.Tasks; class Program { static async Task Main() { var task = Task.FromResult(12345); int fromAwait = await task; int fromResult = task.Result; bool res = fromAwait == fromResult; Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте поймать AggregateException у сбойной задачи:

using System; using System.Threading.Tasks; class Program { static async Task Main() { var task = Task.FromException<int>( new InvalidOperationException("abcde")); await Task.Yield(); try { int x = task.Result; } catch (AggregateException) { Console.WriteLine("fail"); } } }

Результат выполнения кода:

"fail"

Смотрите также

  • метод Wait,
    ждать без чтения Result
  • свойство Exception,
    сохранённый сбой
  • метод FromException,
    сбойная задача
  • Task,
    класс, где объявлено свойство
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить