2010-06-17 51 views
1

VS2010线程窗口显示25个线程和Process.Threads.Count.50VS2010线程窗口显示25个线程和Process.Threads.Count.50为什么?

其他25个在做什么?

+0

只是为了澄清。托管线程在非托管线程中运行,因此托管线程的数量大于unmanged。然而,并非每个托管线程都会有非托管,因此非托管线程的数量可能会少于托管数量....请从这里取出... – 2010-06-18 10:29:18

回答

1

无论何时您在用户代码中创建一个线程,系统都会创建一个匹配的内核线程。我的猜测(虽然它肯定是只有猜测)是其中一个工具只显示用户线程的计数,而另一个显示用户和内核线程的计数。

+0

没有。任务管理器只显示非托管线程。 – 2010-06-23 13:57:16

1

可能是线程池。线程池将为你创建一堆线程,这样当你使用它们时,你不必花费那个时候启动新线程的代价。

运行线程池中的东西的一种方法是创建一个委托并调用它的BeginInvoke。如:

var a = new System.Action(() => { /* do work in the background! */ }); 
a.BeginInvoke(r => a.EndInvoke(r), null); 

该动作的主体将在其中一个线程中执行。