的实现Process.Threads
返回与该进程关联的所有线程,但它们可能是不一定由该进程拥有的线程。
Process.Threads
使用CreateToolHelp32Snapshot收集有关 Win32 的信息。的文档CreateToolHelp32Snapshot
说:
要识别属于特定进程的线程,请在枚举线程时将其进程标识符与 THREADENTRY32 结构的 th32OwnerProcessID 成员进行比较。
但是,填充的代码Process.Threads
不检查th32OwnerProcessID
;它只是枚举所有线程。你可以在这里看到代码:
if (NativeMethods.Thread32First(handleRef, thread))
{
do
{
ThreadInfo threadInfo = new ThreadInfo();
threadInfo.threadId = thread.th32ThreadID;
threadInfo.processId = thread.th32OwnerProcessID;
threadInfo.basePriority = thread.tpBasePri;
threadInfo.currentPriority = thread.tpBasePri + thread.tpDeltaPri;
threadInfos.Add(threadInfo);
}
while (NativeMethods.Thread32Next(handleRef, thread));
}
因此,我假设您还会看到其他进程拥有但与您的子进程相关联的线程。