2012-09-18 40 views
0

我已經開發了應用程序,它使用線程來完成任務,我想關閉正在運行的應用程序在它關閉的過程中,但線程在後臺運行。知道線程數

現在我想顯示創建應用程序的活動線程。但困難是,當我從應用程序啓動應用程序時,線程顯示在任務管理器中,如14-19線程,而不運行應用程序。

你能告訴我只顯示我的應用程序創建的那些線程,而不是系統創建的線程。

+0

可能重複的[如何找到活動線程數?](http://stackoverflow.com/questions/2744295/how-to-find-the-active-thread-count) –

+0

您想要線程或線程數?問問因爲數數很容易做到。但是,如果您想要關閉關閉應用程序中的所有線程,則有更好的解決方案,並告訴您線程數。你想實現什麼? – Sami

+0

你的句子「現在我想顯示創建應用程序的活動線程,但困難在於,當我從任務管理器中顯示應用程序和線程顯示在任務管理器中時,像14-19線程一樣沒有運行應用程序」似乎並沒有太大的一致性我。 – Sami

回答

4

爲什麼不使用Process.Threads?以下應該爲您提供在您的流程下運行的所有線程。

var myProcess = Process.GetCurrentProcess(); 
var myThreads = myProcess.Threads; 
+0

這顯示我的線程加系統線程 – Mukesh

0

這一行可能會幫助你。

System.Diagnostics.Process.GetCurrentProcess().Threads.Count 
+0

我試過這個,但我無法獲得由我的應用程序創建的實際線程 – Mukesh

+0

但是,創建您的應用程序意味着什麼?這顯示當前進程啓動的當前線程。包括啓動其他的* parent *線程。 –

0

我會稍微區別這個問題。我會跟蹤自己開始的線程數量。

我希望我是對的,假設你應該有1個UI線程,然後當你啓動它們時有x個新線程。如果你想要開始的線程總數,可以在每個啓動的線程的應用程序的某個地方增加一個靜態的int值,然後用停止的每個線程遞減int值。

您可能需要鎖定靜態int的增量和減量代碼,以確保兩個線程不會同時更改該值。

.net有很多這樣做的庫。如果你有時間,我建議你閱讀this article,因爲它可能會推動你朝着正確的方向前進。