据我了解,.NET CLR为每个进程创建一个线程池。因此,每个进程都有自己的线程池。并且在每个线程池中,都有一定数量的可用线程。在框架认为必要的情况下,它可能会增加或减少,但它始于每个进程的预定线程数。
我想找出一个简单的WPF应用程序将开始的线程数。当我使用System.Threading.ThreadPool.GetMaxThreads(out worker, out io)
和System.Threading.ThreadPool.GetAvailableThreads(out worker, out io)
时,得到2047个工作线程和1000个io线程相同的结果。但是我认为这是不对的,因此这不是在线程池中查找当前保留的线程的正确方法。
因此,我使用Windows任务管理器查看了线程计数,它显示了该应用程序的10个线程。这似乎很明智,我得出的结论是线程池有9个线程,因为10个线程之一是UI主线程。
首先,我对线程池中9个线程的结论正确吗?其次,使用c#查询它的正确方法是什么?