Вы утечете ресурсы, удерживаемые потоком. Будут различные части .NET удаленных объектов, таких как AsyncResult. Несколько неуправляемых дескрипторов, связанных с потоком. Все арахисы по сравнению с одним мегабайтом адресного пространства виртуальной памяти, которое вы утечете, хранится в стеке потоков.
Вы не можете прервать нить любым способом, утечка постоянна. Когда вам приходится иметь дело с плохим поведением кода, подобным этому, ваш единственный хороший ресурс - запускать его в отдельном процессе, чтобы вы могли заставить Windows очистить осколок, когда вы снимаете процесс в голове с помощью Process.Kill (). Даже если это не гарантировано, такие зависания обычно связаны с неправильной работой драйверов устройств. Process.Kill не прерывает поток драйвера устройства. Легко увидеть: попытка прервать процесс с помощью Taskmgr.exe заставит его работать с одним дескриптором. У вас есть надежда, если этого не произойдет.