如何获取多线程Windows服务应用程序中运行的线程数

时间:2009-08-28 08:53:59

标签: windows multithreading service

我有一个多线程的Windows服务应用程序,我想知道我的应用程序创建了多少线程(带有线程ID,线程名称,相应的进程ID)正在运行。

提前感谢。

3 个答案:

答案 0 :(得分:7)

使用C#

using System;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        Process proc = Process.GetCurrentProcess();
        Console.WriteLine(proc.Threads.Count.ToString());
    }
}

如果你想要一些其他进程(不是当前应用程序)的工作线程,请使用GetProcessById(想要的proc)或GetProcessByName(想要的proc)更改GetCurrentProcess()

如果你想从线程中获得特定内容

proc.Threads[index].[take a look at the properties];

编辑:如何获取流程的所有线程名称?

using System;
using System.Diagnostics;
class Program 
{ 
    static void Main(string[] args) 
    {
        Process[] proc = Process.GetProcessesByName("youprocess");
        Console.WriteLine(proc[0].Threads.Count.ToString()); 
    } 
}

GetProcessesByName返回一个进程数组(可能有几个进程具有相同的名称)。 如果你确定只有一个 - proc [0]就是你想要的。如果有几个你可以用索引访问它们 - proc [0],proc 1等等......如果没有“你的名字”的进程,proc为null

答案 1 :(得分:2)

用于执行您描述的内容的一个很棒的实用程序是Process Explorer:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

答案 2 :(得分:1)

使用Windows任务管理器

Ctrl-Alt-Del
View->SetColumns
Check Thread Count