Это, безусловно, будет работать, CLR будет abort такой поток, когда ваш основной запуск завершается. Довольно похоже на использование Thread.Abort(), за вычетом жестких отказов, которые вы обычно испытываете при использовании Abort(). Это грубое прерывание, нет ничего, что сама нить может сделать, чтобы остановить его. И не будет больше кода, который запускается впоследствии, который может выйти из строя из-за типичных проблем, которые вы получили от Abort(), как тупик. Кроме финализаторов.
Вызов его «правильный», однако, немного растягивается, нет ничего, что может сделать поток, чтобы закончить чисто. Что может быть вредным, если оно имеет внешне наблюдаемое поведение. Как обновление dbase, разговор по сокету или запись файла. Это тоже грубо прервано, потенциально оставляя запутанный сервер или полузаписанный файл, который может вызвать проблемы позже. Смягчающим обстоятельством является то, что это также произойдет, когда ваша программа умрет от необработанного исключения, вы ожидаете, что это тоже не вызовет проблемы. Это зависит :)
Если ваш код может произвольно решить, что пришло время выключить программу и просто вывести все потоки переднего плана, это указывает на то, что эти потоки должны были быть фоновыми потоками в первую очередь. –
Посмотрите здесь http://stackoverflow.com/questions/6062527/how-to-kill-thread-on-exit или http://stackoverflow.com/questions/2688923/how-to-close-all-running -threads –
@Damien_The_Unbeliever - Я согласен с тобой там, он подошел к разговору по другому вопросу о силе, закрывающей приложение. – Sayse