Это не так, как это работает.Любой поток в управляемой программе может выполнять управляемый код, включая те, которые изначально были запущены как неуправляемый поток.Что большинство из них, основной поток и любой поток пула потоков начинает жизнь, выполняя чисто неуправляемый код.Он превращается в управляемый код, хотя тип шлюза, предоставляемый Marshal.GetDelegateForFunctionPointer ().
Просмотр десятков (в противном случае неактивных) потоков не является необычнымОбычно это потоки потоков и потоки, запускаемые COM-серверами.В .NET отсутствует сантехника, которую вам нужно было бы использовать Thread.ManagedThreadId в этих потоках.Это намеренно, логический поток .NET не обязательно должен быть физическим потоком операционной системы.Хотя в настоящее время нет хоста, где это не так.
Вам не придется задавать вопрос.