Если вы хотите удалить поток, который вы запустили самостоятельно, я бы предложил оставить ссылку на него, например, на приватное поле. Когда приложение (или поток) заканчивается, вы можете просто вызвать Thread.Abort()
в этом потоке.
Например:
private Thread _myWorker;
void doSomething()
{
_myWorker = new Thread(...);
_myWorker.Start();
}
void killWorker()
{
_myWorker.Abort()
}
Вы должны заметить, что тогда вы вызовете Abort()
в потоке, который вызовет исключение ThreadAbortException, которое вы должны перехватить в рабочем коде и обработать для очистки и т. Д. Для получения дополнительной информации см. Thread.Abort
Кроме того, когда ваше приложение закрывает свой основной поток (цикл сообщений, или Application.Run), дочерние потоки также будут закрыты.