¿En qué casos no termina la rosca?
Esta pregunta es un duplicado.
What's wrong with using Thread.Abort()
¿Hay alguna otra posibilidad de interrumpir las discusiones?
Sí. Tu problema es que nunca debes poner en marcha un hilo que no puedes decir educadamente que pare, y se detiene de manera oportuna. Si se encuentra en una situación en la que tiene que iniciar un hilo que puede ser (1) difícil de detener, (2) defectuoso, o lo peor de todo (3) hostil para el usuario, entonces lo correcto es hacer un nuevo proceso, inicie el subproceso en el nuevo proceso y luego finalice el proceso cuando desee que el subproceso descienda. Lo único que puede garantizar la finalización segura de un hilo no cooperativo es que el sistema operativo anule todo el proceso.
Ver mi excesivamente larga respuesta a esta pregunta para más detalles:
Using lock statement within a loop in C#
El bit relevante es el bit en el extremo donde discuto lo que las consideraciones están en relación con el tiempo que debe esperar a que un hilo suicidarse antes de abortarlo
me necesita abortar(), debido a un bucle de mensaje iniciado en ese hilo (Dispatcher.Run();). Si lo entiendo correcto, ¿debo invocar un método que llame a return en el hilo para finalizarlo? – user101375