我们有Web应用程序,我们正在使用一些性能计数器。对于同时运行多个应用程序的情况,我们有用于确定当前实例名称的代码:
int processId = GetProcessID();
PerformanceCounterCategory processCategory = new PerformanceCounterCategory("Process");
string[] runnedInstances = processCategory.GetInstanceNames();
foreach (string runnedInstance in runnedInstances){
using (System.Diagnostics.PerformanceCounter performanceCounter =
new System.Diagnostics.PerformanceCounter("Process", "ID Process", runnedInstance, true)){
if ((int)performanceCounter.RawValue == processId){
return runnedInstance;
}
}
}
此代码工作正常,但前段时间我们在.Net CLR类别中添加了两个计数器。正如我们发现他们在进程ID和实例名称之间有不同的匹配:alt text http://img26.imageshack.us/img26/9876/perfmon.png
因此.Net Clr内存和进程类别的一个实例名称的进程ID不同。
是.Net的错误吗?
我应该使用什么计数器(来自.Net Clr内存的进程ID或来自进程类别的ID进程)来获取正确的实例名称?