using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1)); await Task.Run(() => Thread.Sleep(10_000), cts.Token);
Отмена пришла через секунду. Делегат проспал все десять, await не бросил исключение, задача завершилась успешно 🌟
Токен как пожарная сигнализация: орёт, но не тушит. Тушит тот, кто услышал. HttpClient рвёт запрос, драйвер PostgreSQL шлёт базе команду отмены, Task.Delay убирает таймер. А Thread.Sleep не слышит ничего.
Кто на токен не смотрит, тот не остановится. Сколько его ни передавай.
Снаружи поток тоже не остановишь: Thread.Abort в современном .NET бросает PlatformNotSupportedException.
В ролике показал сервис, где сигнализация орала, а база не слышала: токен в каждом вызове, а PostgreSQL доделал 4 запроса из 4 🌟


Дискуссия