在单声道中获取处理器时间百分比

Get % Processor Time in Mono

我正在开展一个项目,该项目需要监控 cpu 的使用百分比。它必须在 Mac 和 Windows 上,所以我使用的是 Mono 和 Xamarin。

我用来获取这个的代码是(这是一个测试,但计数器是一样的):

var cpuCounter = new PerformanceCounter
{
    CategoryName = "Processor",
    CounterName = "% Processor Time",
    InstanceName = "_Total"
};

cpuCounter.NextValue ();
Thread.Sleep (1000);

for (var i = 0; i < 50; i++) {
    Console.WriteLine (cpuCounter.NextValue());
    Thread.Sleep (1000);
}

在电脑上,returns任务管理器显示的内容。在 mac 上,这个 returns 100 每次跳动,即使 activity 监视器显示不同。

我试过谷歌搜索,但似乎没有任何效果。

想法?

我们遇到了类似的问题。我们解决它的方法是编写脚本。我将在脚本中共享代码。以及我们从 Mono 调用它的方式。

脚本(我们称它为 getCPU.sh 并将其保存在 /Library/Application Support/UniqueApp)

#!/bin/bash
ps x -o pcpu,comm | grep UniqueApp

单声道代码 -

  var psi = new ProcessStartInfo("/bin/sh", "\"/Library/Application Support/UniqueApp/getCPU.sh\"")
                              {
                                  RedirectStandardOutput = true,
                                  UseShellExecute = false
                              };
                Process p = Process.Start(psi);
                string outString = p.StandardOutput.ReadToEnd();
                p.WaitForExit();
                outString = outString.Substring(0, 5).Trim()

outString 将具有 UniqueApp

使用的 CPU 百分比

如果您希望整个机器的 CPU 百分比更改 getCPU.sh 以包含以下代码 -

#!/bin/bash
ps x -o pcpu | tail -n+2| awk '{s+=} END {print s}'