【发布时间】:2012-02-25 06:58:51
【问题描述】:
我正在跟踪同一应用程序的多个实例,并且需要获取两个进程的内存和 CPU 使用情况。但是,我似乎无法找到使用性能计数器并知道哪个结果适用于哪个进程的方法。我已经看到我可以将 #1 等附加到名称的末尾以获得每个结果,但这并不能告诉我哪个用于哪个进程。
如何确定 ProcessId 或将进程 ID 传递给计数器以获取每个同名进程的结果?
PerformanceCounterCPU.CategoryName = "Process";
PerformanceCounterCPU.CounterName = "% Processor Time";
PerformanceCounterCPU.InstanceName = proc.ProcessHandle.ProcessName;
PerformanceCounterMemory.CategoryName = "Process";
PerformanceCounterMemory.CounterName = "Working Set - Private";
PerformanceCounterMemory.InstanceName = proc.ProcessHandle.ProcessName;
【问题讨论】:
-
哇!两年前我完全遇到了同样的问题,当时我没有找到任何答案......现在也在等待答案;)
-
谢谢本。不幸的是,我过去提出的问题很少见,也没有得到解决。我最终放弃了使用这些问题中的方法。
-
肯,下面的答案成功了
-
是的,但恕我直言,这并不是很简单。这实际上应该有效,但我期望更简单、更健壮的东西。据我所知,具有相同名称的不同可执行文件可能会出现一些问题(实际上不记得了)。
-
我喜欢当我回去看到我的一个老问题并想知道,我到底为什么需要这些信息......然后一切都回到了我身边。编程的乐趣。
标签: c# performancecounter