Здесь часто в предложениях прокомментировать свой код, да и просто в разных фрагментах опубликованного кода проскакивают вызовы методов Thread.Abort для завершения работы вновь созданного потока. На самом деле, это является не самой удачной практикой и существует масса способов получить "неожиданное" состояние приложения. На самом деле, это верный способ получить рассогласованное состояние приложения, дедлоки и утечки ресурсов.
В общем, если интересно — велкам:
"О вреде метода Thread.Abort".