Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Непонятна суть CancellationToken.None |
Автор: lllJollyRogerlll 5.10.2017, 18:40 | ||
Доброго времени суток. Прошу объяснить деревянному, почему в данном случает отрабатывает метод обратного вызова?
Ведь статическое св-во CancellationToken.None передает токен, который не содержит ссылки на его соурс. То есть впринципе мы не можем строкой cts.Cancel(); отменить выполнение цикла. А в жизни выходит все в точности наоборот. См. скрин ниже http://radikal.ru |
Автор: mihryak 12.10.2017, 19:13 |
Весь код приведи, плз, в т.ч. вызывающий твой кусок кода. Подозреваю, что "Press any key to continue" - последний вывод сообщения в программе, после чего она завершается. В том случае нет никакого чуда: 1. Запускается задача на печать чисел 2. Вызывающий поток блочится вызовом Console.ReadLine(); 3. Пользователь жмёт кнопку 4. Основной поток продолжает работу 5. Основной поток вызывает cts.Cancel();, что выводит на экран "was cancelled" 6. Это, вероятно, последняя "рабочая" инструкция основного потока, после чего выводится "Press any key to continue". 7. Т.к. потоки из пула имеют свойство IsBackground=false, они автоматически завершаются при завершении вызывающего (у нас - основного) потока, наша поточная функция попросту завершеается примерно на том моменте, когда пользователь нажал enter |
Автор: lllJollyRogerlll 15.10.2017, 10:48 | ||
Доброго времени суток. Все точно так и есть. Спасибо большое что разжевали!
|