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

C# 如何获取.Net内核中进程的CPU使用率和虚拟内存?,c#,.net-core,C#,.net Core,在.NETCore中,如何获取给定进程的CPU使用率和虚拟内存 谷歌搜索结果显示PerformanceCounter和DriverInfo类可以完成这项工作。但是,PerformanceCounter和DriverInfo类在.NET Core中不可用 stackoverflow上有一篇关于这个问题的帖子: 然而,它只涉及: -当前进程的CPU使用率: var proc = Process.GetCurrentProcess(); 我得到了一个进程(带有ProcessID整数格式)。如

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

谷歌搜索结果显示PerformanceCounter和DriverInfo类可以完成这项工作。但是,PerformanceCounter和DriverInfo类在.NET Core中不可用

stackoverflow上有一篇关于这个问题的帖子:

然而,它只涉及: -当前进程的CPU使用率:

    var proc = Process.GetCurrentProcess();

我得到了一个进程(带有ProcessID整数格式)。如何在.NET Core中获取特定进程的CPU使用率和虚拟内存?

我刚刚在google中键入了“获取c#中的所有进程”,并发现了以下内容:

        Process[] processlist = Process.GetProcesses();

        foreach (Process theprocess in processlist)
        {
        }
我很快在asp.NETCore2.2中进行了测试,使用System.Diagnostics它运行良好; 然而,我用Windows10Pro来测试它。所以我不知道它是否能与其他操作系统一起工作


来源:

您可以在
系统.Diagnostics.PerformanceCounter
中使用
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);
var cpuCounter=新的性能计数器(“处理器”、“%处理器时间”、“\u总计”,true);
var value=cpuCounter.NextValue();
//在大多数情况下,需要调用.NextValue()两次

if(数学绝对值)听起来.Net Core目前是您的需求的错误选择。为什么不直接使用.Net Framework?我上面写的代码是针对.Net Core的。而不是.Net Framework。我知道……我的意思是,您为什么要使用.Net Core?在.Net Framework上使用它有具体的原因吗?@JamieRees,上面的函数需要在.Net C中工作ore因为该项目需要在Windows、Linux、macOS和Docker的web应用程序和服务中运行。这仍然可以在.Net Framework中使用MonoGetProcesses()完成,在中被列为应用于dotnetcore。Linux不支持PerformanceCounter