Как в C# осуществить выход из потока (с другого класса)?
Мне кажется задача изначально возможно так спроектирована, что получаются запутанные решения. Первая мысль про отмену выполнения потока была тоже сделать на базе CToken, но получается токен нужно передавать еще и в метод check (оттуда же вызываем отмену в данном варианте), что лично мне не не очень нравится.
Вариант с вбросом исключения в принципе должен работать вполне, но сама идея, больше похоже на какой-то хак, в конце концов исключения лучше всего использовать для действительно исключительных ситуаций.
С другой стороны смотрите, получается метод check что-то проверяет. Значит должен возвращать результат проверки (true/ false). По результатам проверки должно приниматься решение о том, прекратить выполнение или продолжить. Мне кажется надо пересмотреть решение задачи, чтобы логика была более очевидной, а не вбросами исключений в разных местах кода.
Можно попробовать вызывать метод Abort у текущего потока.Thread.CurrentThread.Abort();