TGViewer
C# | Вопросы собесов C# | Вопросы собесов @easy_c_sharp · 5.01K subscribers
Post #2297 761
🤔 Что такое cancellation token в многопоточности?

CancellationToken в C# используется для координации отмены между потоками. Это механизм, позволяющий запрашивать отмену операции (например, задачи Task или асинхронного метода), не прерывая поток принудительно.

🚩Зачем нужен `CancellationToken`?

В многопоточных или асинхронных операциях бывает необходимо отменить выполнение кода, например:
Пользователь отменил загрузку файла.
Истек тайм-аут выполнения операции.
Нужно прервать выполнение нескольких связанных задач.

🚩Как работает `CancellationToken`?

🟠Создание `CancellationTokenSource`
Источник токена (CancellationTokenSource) управляет токеном (CancellationToken), который передаётся в задачи.

🟠Передача токена в выполняемую операцию
Код регулярно проверяет cancellationToken.IsCancellationRequested, чтобы определить, нужно ли остановиться.

🟠Запрос на отмену
Если вызывается cts.Cancel(), все методы, использующие этот токен, получают сигнал об отмене.

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

using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
static async Task Main()
{
using var cts = new CancellationTokenSource();

// Отменяем операцию через 3 секунды
cts.CancelAfter(3000);

try
{
await DoWorkAsync(cts.Token);
}
catch (OperationCanceledException)
{
Console.WriteLine("Операция отменена!");
}
}

static async Task DoWorkAsync(CancellationToken cancellationToken)
{
for (int i = 0; i < 10; i++)
{
cancellationToken.ThrowIfCancellationRequested(); // Проверка отмены

Console.WriteLine($"Работаем... {i}");
await Task.Delay(1000, cancellationToken); // Ожидание с проверкой отмены
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_c_sharp
  1. Oct 10, 2026🤔 Если в двух переменных хранится одинаковое значение, то будут ли они равны? Сравнение з…
  2. Oct 9, 2026Post #2474
  3. Oct 9, 2026🤔 Что такое interlocked? Interlocked — это механизм для безопасного изменения чисел между…
  4. Oct 9, 2026🤔 Что такое сборщик мусора? Сборщик мусора (Garbage Collector, GC) — это форма автоматиче…
  5. Oct 8, 2026🤔 Какая разница между методом clone и CopyTo массивов? - clone() — создает новый массив с…
  6. Oct 8, 2026🤔 Какие тесты бывают? 🚩Виды 🟠Юнит-тесты Предназначены для проверки отдельных компоненто…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →