Sobes.tech
Middle — Middle+

Leg uit wat het doel en de werking van het object CancellationToken is in de context van asynchrone programmeren.

sobes.tech AI

Antwoord van AI

Объект CancellationToken используется для координации отмены асинхронных операций в C#. Он позволяет передавать сигнал отмены из вызывающего кода в выполняющуюся задачу.

Основные моменты:

  • CancellationToken сам по себе не отменяет операцию, а лишь предоставляет возможность проверить, была ли запрошена отмена.
  • Обычно создаётся CancellationTokenSource, который генерирует CancellationToken и может инициировать отмену вызовом Cancel().
  • Асинхронный метод периодически проверяет свой CancellationToken (например, через свойство IsCancellationRequested или метод ThrowIfCancellationRequested()), чтобы корректно завершить работу при отмене.

Пример использования:

var cts = new CancellationTokenSource();
var token = cts.Token;

Task.Run(() => {
    for (int i = 0; i < 100; i++)
    {
        token.ThrowIfCancellationRequested();
        // Выполнение части работы
        Thread.Sleep(100);
    }
}, token);

// Позже, чтобы отменить:
cts.Cancel();

Таким образом, CancellationToken обеспечивает механизм безопасной и кооперативной отмены асинхронных операций.