在“ .NET CLR内存”效果计数器类别下,有一个名为“进程ID ”的计数器。此计数器的任何给定实例都应返回与该实例关联的Windows进程的进程ID。对于我自己的进程,此计数器始终为零值。那是为什么?
如果我查看计数器的devenv
实例,它会返回预期值 - 至少,该值与任务管理器报告的进程ID匹配。
如果我在调试模式下运行我自己的应用程序并检查计数器的PerfCounterTest.vshost
实例,它只有零值。
如果我在没有调试器的情况下运行自己的应用程序,PerfCounterTest
实例始终为零。
如果我运行自己的应用程序的多个实例,序列编号的实例PerfCounterTest#1
,PerfCounterTest#2
...都具有零值。
为什么这个计数器总是为零,并且看到它始终为零,我如何找到与我的进程关联的实例名称,同时记住它可能没有唯一的名称?
答案 0 :(得分:0)
实际上,此计数器的实例将具有零值,直到与该实例关联的进程中发生第一次垃圾收集。
此事实记录在与“进程ID ”计数器关联的计数器帮助文本中:
此计数器显示正在监视的CLR流程实例的进程ID。在第一次垃圾收集之后,显示的值将为0。
隐匿性源于这样一个事实,即虽然您可以使用span {
display: inline-block;
}
命名空间中的内容轻松阅读此文本,但此处没有其他文档。我在MSDN,TechNet和网络上搜索过,一无所获。即使在发现答案后,我打开了 PerfMon 并试图在U.I中找到这个字符串。 - 据我所知,它不会在任何地方显示。
供将来参考,以下是您询问计数器帮助文本的方式:
System.Diagnostics