Подписки (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 г.
Дата создания : 1 августа 2022 г.