Sobes.tech
Middle — Middle+
89

Объясните назначение и работу объекта CancellationToken в контексте асинхронного программирования.

Компании, где спрашивали
ООО Клеркгрупп

Ответ от нейросети

sobes.tech 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 обеспечивает механизм безопасной и кооперативной отмены асинхронных операций.