Как уже сказал Джон, вы не можете сказать потоку: «пожалуйста, остановитесь сейчас» и ожидайте, что поток будет подчиняться. Thread.Abort не скажет ему остановиться, просто отключит его. :)
В прошлом я делал добавление серии «if (wehavetostop)» в коде потока, а если пользователь нажал «отменить», я поместил wehavetostop == true.
Это не слишком элегантно, и в некоторых случаях может быть «трудно» поставить проверки «если», особенно если ваш поток выполняет «длинную» операцию, которую вы не можете разделить.
Если вы пытаетесь установить сетевое соединение (и это занимает много времени), и вы действительно думаете, что «ненормальное» завершение потока не приведет к повреждению, вы можете использовать его, но помните, что вы не можете доверять состояние вещей, которые были вовлечены в эту тему.