Из комментария acidzombie24 к другому ответу :
Так .abort - лучший вариант? То, что я хочу сделать, это убить поток, но он существует и вызвать несколько функций вместо прямой смерти
Что-то вроде события было бы лучше.
Предполагая, что вы хотите иметь возможность сигнализировать каждый поток по отдельности, перед запуском каждого рабочего потока создайте AutoResetEvent и передайте его потоку.
Если вы хотите прервать поток, вызовите Установите на событие. В рабочем потоке регулярно проверяйте состояние события:
if (theEvent.WaitOne(TimeSpan.Zero)) {
// Handle the interruption.
}
(Регулярно: должно определяться требованиями: накладные расходы на проверку в сравнении с задержкой прерывания.)
Чтобы иметь главное прерывание, чтобы подать сигнал всем работникам, используйте ManualResetEvent , который будет оставаться сигнальным, и продолжайте прерывать потоки при проверке, пока явно Сброс .