Перейти к содержанию

Подписки (subscriptions) в CancellationTokenSource

Когда мы отменяем таск через CancellationTokenSource, все подписки выполняются в текущем потоке. Это может приводить к дедлокам или неожиданным задержкам.

var cts = new CancellationTokenSource();
cts.Token.Register(() => Thread.Sleep(5000));
cts.Cancel(); // This call will block during 5 seconds

Поэтому, если мы не можем ожидать выполнения ВСЕХ подписок в текущем потоке, нужно обернуть вызов cts.Cancel() в Task.Run

Ссылки

https://kevingosse.medium.com/performance-best-practices-in-c-b85a47bdd93a


Последнее обновление : 1 августа 2022 г.
Дата создания : 1 августа 2022 г.

Комментарии

Комментарии