2010-09-09 57 views
0

查询“进程”性能计数器类别的实例时,可能会有多个具有相同名称的进程的实例。使用Process PerformanceCounters我如何知道实例与哪个进程关联?

例如下面的代码:

var cat = new PerformanceCounterCategory("Process"); 

var names = cat.GetInstanceNames(); 

foreach (var name in names) 
    Console.WriteLine(name); 

可能会打印这些结果: ... IEXPLORE IEXPLORE#1 IEXPLORE#2 IEXPLORE#3 ...

我如何知道每个这些计数器实例对应哪个进程?

回答

2

“Process”类别中有一个名为“ID Process”的PerformanceCounter,它将返回性能计数器实例对应的进程的pid。

var cat = new PerformanceCounterCategory("Process"); 

var names = cat.GetInstanceNames(); 

foreach (var name in names.OrderBy(n => n)) 
{ 
    var pidCounter = new PerformanceCounter("Process", "ID Process", name, true); 
    var sample = pidCounter.NextSample(); 
    Console.WriteLine(name + ": " + sample.RawValue); 
} 

这将打印:

...

IEXPLORE:548

IEXPLORE#1:1268

IEXPLORE#2:4336

。 ..

相关问题