我正在开发一个需要监控正在使用的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);
}
在电脑上,这将返回任务管理器显示的内容。在Mac上,即使活动监视器显示不同,每次打勾也会返回100。
我尝试使用Google搜索,似乎没有任何效果。
想法?
答案 0 :(得分:3)
我们遇到了类似的问题。我们解决它的方式是编写脚本。我将在脚本中共享代码。我们从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+=$1} END {print s}'