如何获取.Net Core中进程的CPU使用率和虚拟内存?

时间:2019-01-14 09:26:01

标签: c# .net-core

在.NET Core中,如何获取给定进程的CPU使用率和虚拟内存?

Google搜索结果表明PerformanceCounter和DriverInfo类可以完成此任务。但是,PerformanceCounter和DriverInfo类在.NET Core中不可用。

stackoverflow中有一个有关此问题的帖子:How to get the current CPU/RAM/Disk usage in a C# web application using .NET CORE?

但是它只能解决: -当前进程的CPU使用率:

    var proc = Process.GetCurrentProcess();

已给我进程(具有ProcessID整数格式)。如何在.NET Core中获取该特定进程的CPU使用率和虚拟内存?

2 个答案:

答案 0 :(得分:1)

您可以在PerformnceCounter package

中使用System.Diagnostics.PerformanceCounter

例如,下一个代码将给您总处理器使用率百分比

var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
var value = cpuCounter.NextValue();
// In most cases you need to call .NextValue() twice
if (Math.Abs(value) <= 0.00)
    value = cpuCounter.NextValue();

Console.WriteLine(value);

答案 1 :(得分:-1)

我刚刚在Google中输入“在c#中获取所有进程”,并发现了这一点:

<h:form id="frmMain2">
        <f:subview id="sub1">
            <ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1">
                <fieldset>
                    <legend>vatId</legend>
                    <h:panelGroup id="panel">
                        <ui:repeat var="item" value="#{someBean.supplies[vatId]}" id="rep2">
                            <f:subview id="sub2">
                                <h:commandLink id="command">
                                    ${item}
                                    <f:ajax
                                        event="click"
                                        render=":frmMain2:sub1:rep1:0:panel">
                                    </f:ajax>
                                </h:commandLink>
                            </f:subview>
                        </ui:repeat>
                    </h:panelGroup>
                </fieldset>
            </ui:repeat>
        </f:subview>
    </h:form>
我在asp.net core 2.2中进行了快速测试,并且使用System.Diagnostics可以正常工作; 但是我用Windows 10专业版来测试它。所以我不知道它是否可以与其他操作系统一起使用。

来源:https://www.howtogeek.com/howto/programming/get-a-list-of-running-processes-in-c/