Sobes.tech
Junior — Middle

Можете ли да обясните концепцията за токен за анулиране в контекста на многопоточната програмиране?

sobes.tech AI

Отговор от AI

Токенът за отказ (Cancellation Token) в многопоточната програмиране е обект, който се използва за координиране на отказа на асинхронни или паралелни операции.

Основната идея: един поток (или компонент) може да поиска отказ на операция, а други, които изпълняват тази операция, могат периодично да проверяват състоянието на токена и да приключат правилно, ако е поискана отказ.

В C# това се реализира чрез класовете CancellationToken и CancellationTokenSource:

  • CancellationTokenSource създава токен и може да сигнализира за отказ.
  • CancellationToken се предава към задачи или методи, които могат да проверяват IsCancellationRequested и да реагират на отказ.

Пример:

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

Task.Run(() => {
    while (!token.IsCancellationRequested)
    {
        // Изпълняваме работа
    }
    // Почистващи действия и приключване
}, token);

// Някъде в кода извикваме отказ
cts.Cancel();

Това позволява безопасно и контролирано прекъсване на дълги или фонови операции.