В дополнение ко всем другим хорошим ответам здесь, позвольте мне добавить, что нет никакой гарантии, что вызов Thread.Abort фактически прервет рассматриваемый поток, когда-либо. Возможно (хотя и не особенно легко) «затвердеть» нить от прерывания. Например, если вы прерываете поток, потому что считаете, что он выполняет враждебный код, тогда враждебный код может противостоять самому уничтожению.
Если у вас есть длительная операция с кодом, которым вы не владеете, который должен быть аккуратно удален, правильный способ сделать это - поместить этот код в собственный процесс , а не в его собственный нить. (И предпочтительно в домене приложений с высоким уровнем безопасности в этом процессе.) Затем вы можете просто убить процесс.
Короче говоря, Thread.Abort в лучшем случае указывает на плохой дизайн, возможно, ненадежный и чрезвычайно опасный. Следует избегать любой ценой; единственный раз, когда вам стоит подумать об прерывании потока, это какой-то код «аварийного отключения», когда вы пытаетесь уничтожить домен приложения как можно более аккуратно.