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

TaskCanceledException

TaskCanceledException наследует OperationCanceledException. Его получают, например, из Task.FromCanceled(token) при синхронном ожидании через GetAwaiter().GetResult(). Исключение перехватывают отдельно от других сбоев задачи.

Синтаксис

using System.Threading; using System.Threading.Tasks; Task.FromCanceled<int>(token).GetAwaiter().GetResult();

Пример

Давайте поймаем TaskCanceledException:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { using var cts = new CancellationTokenSource(); cts.Cancel(); try { Task.FromCanceled<int>(cts.Token) .GetAwaiter() .GetResult(); } catch (TaskCanceledException) { Console.WriteLine("fail"); } } }

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

"fail"

Пример

Давайте проверим, что это наследник OperationCanceledException:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { using var cts = new CancellationTokenSource(); cts.Cancel(); try { Task.FromCanceled<int>(cts.Token) .GetAwaiter() .GetResult(); } catch (TaskCanceledException ex) { Console.WriteLine(ex is OperationCanceledException); } } }

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

True

Пример

Давайте поймаем базовый тип через OperationCanceledException:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { using var cts = new CancellationTokenSource(); cts.Cancel(); try { Task.FromCanceled<int>(cts.Token) .GetAwaiter() .GetResult(); } catch (OperationCanceledException) { Console.WriteLine("fail"); } } }

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

"fail"

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

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