gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:48 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目需要监控正在使用的 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,即使事件监视器显示不同也是如此。

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

想法?

最佳答案

我们遇到了类似的问题。我们解决它的方法是编写脚本。我将在脚本中共享代码。以及我们从 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}'

关于c# - 在单声道中获取处理器时间百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com