2012-09-18 48 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,因为它可能会推动你朝着正确的方向前进。