2.1Kпросмотров
21.1%от подписчиков
18 марта 2026 г.
question📷 ФотоScore: 2.3K
Почему CancellationToken бесполезен, если не передать его дальше? Многие принимают CancellationToken в методе, но потом просто не используют его в реальной async-операции. В итоге создаётся ощущение, что отмена у нас поддерживается, хотя на практике запрос в базу или внешний сервис всё равно продолжает выполняться. То есть клиент уже закрыл страницу или отменил запрос, а сервер всё ещё тратит ресурсы на работу, результат которой уже никому не нужен.
public async Task<List<Order>> GetOrders(CancellationToken ct)
{ return await _db.Orders .Where(x => x.IsActive) .ToListAsync();
} Чтобы отмена действительно работала, токен нужно прокидывать до самого места, где выполняется операция.
public async Task<List<Order>> GetOrders(CancellationToken ct)
{ return await _db.Orders .Where(x => x.IsActive) .ToListAsync(ct);
} CancellationToken полезен не тогда, когда он просто есть в сигнатуре, а тогда, когда реально доходит до ToListAsync, SendAsync, ReadAsync и других операций, которые можно остановить. 🔥 Если токен не дошёл до реальной работы — отмена у тебя существует только на бумаге. ➡️ C# Ready | #совет