Bop*_*Bop 9 .net c# multithreading threadpool
有没有办法找出我使用的托管线程数(包括ThreadPool)?
当我通过GetProcess得到非托管线程的数量时,我有一个疯狂的数字(一开始就是21)
这不是它的工作方式。托管程序中的任何线程都可以执行托管代码,包括最初作为非托管线程启动的代码。其中大多数是主线程和任何线程池线程开始执行纯粹的非托管代码。它通过 Marshal.GetDelegateForFunctionPointer() 提供的网关类型插入托管代码。
看到数十个(否则不活动的)线程并不罕见。它们通常是线程池线程和由 COM 服务器启动的线程。.NET 缺少在这些线程上使用 Thread.ManagedThreadId 所需的管道。这是故意的,逻辑 .NET 线程不必是物理操作系统线程。尽管当前使用的主机中没有不是这种情况的。
你必须避免问这个问题。