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

SetException

SetException передаёт Exception. При await выбрасывается исходное исключение, а Result оборачивает его в AggregateException.

Синтаксис

tcs.SetException(new InvalidOperationException("abcde"));

Пример

Давайте передадим ошибку и перехватим её при await:

using System; using System.Threading.Tasks; class Program { static async Task Main() { var tcs = new TaskCompletionSource<int>(); tcs.SetException(new InvalidOperationException("abcde")); try { await tcs.Task; } catch (InvalidOperationException ex) { Console.WriteLine(ex.Message); } } }

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

"abcde"

Пример

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

using System; using System.Threading.Tasks; class Program { static void Main() { var tcs = new TaskCompletionSource<int>(); tcs.SetException(new InvalidOperationException("abcde")); try { _ = tcs.Task.Result; } catch (AggregateException) { Console.WriteLine("fail"); } } }

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

"fail"

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить