Странное поведение CancellationTokenC#

Место общения программистов C#
Anonymous
Странное поведение CancellationToken

Сообщение Anonymous »

Я тестирую поведение CancellationToken в своем UserRepository. Когда я использую cancelToken из параметров и отменяю запрос с помощью почтальона, это работает без исключения (и действительно отменяет запрос). Это также работает, когда я создаю CancellationTokenSource и отменяю его вручную, но тогда у меня возникает исключение:

Код: Выделить всё

System.Threading.Tasks.TaskCanceledException: A task was canceled.
Без исключений:

Код: Выделить всё

public async Task GetAllUsers(CancellationToken cancellationToken)
{
await Task.Delay(2000, cancellationToken);
...
Исключение:

Код: Выделить всё

public async Task GetAllUsers(CancellationToken cancellationToken)
{
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
source.Cancel();

await Task.Delay(2000, token);
...
Почему токены обрабатываются по-разному?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -behaviour

Вернуться в «C#»