OperationCanceledException
Исключение возникает после отмены через
CancellationTokenSource и вызова
Cancel(), если код проверяет токен
методом ThrowIfCancellationRequested.
Наследник -
TaskCanceledException
- используют для отменённых задач. Сбой
перехватывают, чтобы программа не падала.
Синтаксис
using System.Threading;
cts.Token.ThrowIfCancellationRequested();
Пример
Давайте отменим и поймаем исключение:
using System;
using System.Threading;
class Program
{
static void Main()
{
using var cts = new CancellationTokenSource();
cts.Cancel();
try
{
cts.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте проверим, что токен уже отменён:
using System;
using System.Threading;
class Program
{
static void Main()
{
using var cts = new CancellationTokenSource();
cts.Cancel();
Console.WriteLine(cts.Token.IsCancellationRequested);
}
}
Результат выполнения кода:
True
Пример
Давайте не вызовем ThrowIfCancellationRequested
до отмены:
using System;
using System.Threading;
class Program
{
static void Main()
{
using var cts = new CancellationTokenSource();
bool res = false;
try
{
cts.Token.ThrowIfCancellationRequested();
res = true;
}
catch (OperationCanceledException)
{
res = false;
}
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
TaskCanceledException,
наследник для отменённых задач -
TimeoutException,
когда истекло время ожидания -
AggregateException,
которое может обернуть сбой задачи -
Exception,
базовый тип исключений