【发布时间】:2015-08-19 07:46:59
【问题描述】:
好吧,我正在尝试为所有正在运行的 Notepad 实例获取内存(私有工作集)。 例如,假设 4 个记事本进程正在运行,现在我想要所有 4 个记事本实例消耗的总内存。
到目前为止,我已经尝试过为单人获取内存(私人工作集)
Process[] proc = Process.GetProcessesByName(Notepad);
foreach (var kl in proc)
{
idnuml = kl.Id; // fetching pid for Notepad running instance.
}
PerformanceCounter PC = new PerformanceCounter( "Process", "Working Set - Private", InstanceName);
memsize = Convert.ToInt32(PC.NextValue()) / 1024;
我不知道为什么 PerformanceCounter 不适用于 PID。 在每次迭代中,它能够检测不同实例的记事本 pid,但最终所有实例的工作集值相同。
请帮帮我。 提前感谢
【问题讨论】:
-
您确定要在找到的进程的 foreach 循环中添加更多代码吗?这就是为什么你得到相同的值而不是所有的值
-
即使在获得 PID 之后,最后我们也必须传递实例名称,即再次记事本。所以现在我又回到了展馆:'(
-
是的,但是,您的循环将 idnum1 设置为 id,但您最终只会将 idnum1 设置为循环中最后一个的值......所以它只会获取内存最后一项的用法。但是你也不使用 idnum1。
-
好的,似乎有些混乱,我发布的代码是部分的,我只想使用pid获取内存(私有工作集),因为我不知道PerformanceCounter是否真的是否接受pid,我尝试了几次使用pid搜索记事本内存,但出现异常,PerformanceCounter PC = new PerformanceCounter("Process", "Working Set - Private", InstanceName);现在告诉我是否可以使用 PID 找到工作集,如果是,请告诉我如何?
-
你没有提到......当你发布的代码不是实际运行的时候,它很难帮助你。
标签: c# performancecounter