ThrowIfCancellationRequested
ThrowIfCancellationRequested у
CancellationToken
ничего не делает для
None.
Для new CancellationToken(true)
бросает OperationCanceledException.
Проверяют вместо чтения
IsCancellationRequested.
Синтаксис
token.ThrowIfCancellationRequested();
Пример
Давайте вызвать для None:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationToken.None.ThrowIfCancellationRequested();
Console.WriteLine(CancellationToken.None.IsCancellationRequested);
}
}
Результат выполнения кода:
False
Пример
Давайте поймаем отменённый токен:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationToken token = new CancellationToken(true);
try
{
token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте вызвать после Cancel источника:
using System;
using System.Threading;
class Program
{
static void Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.Cancel();
try
{
cts.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException)
{
Console.WriteLine("fail");
}
cts.Dispose();
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
IsCancellationRequested,
флаг без исключения -
Cancel,
запросить отмену -
Register,
обработчик отмены -
CancellationToken,
структура признака