Dans quels cas cela ne met pas fin au thread?
Cette question est un double.
Quel est le problème avec l'utilisation de Thread.Abort ()
Existe-t-il une autre possibilité de terminer les threads?
Oui. Votre problème est que vous ne devriez jamais démarrer un thread auquel vous ne pouvez pas dire poliment d'arrêter, et il s'arrête en temps opportun. Si vous êtes dans une situation où vous devez démarrer un thread qui pourrait être (1) difficile à arrêter, (2) bogué, ou pire de tous (3) hostile à l'utilisateur, alors la bonne chose à faire est de faire un nouveau processus, démarrez le thread dans le nouveau processus, puis arrêtez le processus lorsque vous souhaitez que le thread s'arrête. La seule chose qui peut garantir l'arrêt en toute sécurité d'un thread non coopératif est que le système d'exploitation supprime tout son processus.
Voir ma réponse excessivement longue à cette question pour plus de détails:
Utilisation de l'instruction de verrouillage dans une boucle en C #
Le bit pertinent est le bit à la fin où je discute de ce que sont les considérations concernant combien de temps vous devez attendre qu'un thread se tue avant de l'abandonner.