2010-06-17 33 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); 

該動作的主體將在其中一個線程中執行。