我有一个多线程的Windows服务应用程序,我想知道我的应用程序创建了多少线程(带有线程ID,线程名称,相应的进程ID)正在运行。
提前感谢。
答案 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