可以在任务管理器中看到这些参数。
答案 0 :(得分:0)
答案可能有点大,但它会回答整个问题,除了 DISK USAGE 部分。
以百分比(%)获取CPU利用率
不确定WMI
是否可以用于此案例,但我不想使用WMI
,因为并非所有计算机都支持WMI
。我会尝试使用其他类,例如{解决方案{1}}左右。这是一个示例代码,它将以%
PerformanceCounter
现在,只需使用public FinalResult as float;
public async void GetCPUCounter()
{
CounterSample firstValue = cpuCounter.NextSample();
await Task.Delay(900); //delay is required because first call will always return 0
CounterSample secondValue = cpuCounter.NextSample();
FinalResult = CounterSample.Calculate(firstValue, secondValue);
await Task.Delay(900);
GetCPUCounter(); //calling again to get repeated values
}
重复获取cpu利用率。在此之前,只需从代码中的任意位置调用Windows.Forms.Timer
一次,让我们说GetCPUCounter()
事件:
Form_load
以百分比(%)获取内存利用率
这是一个包含2个 private void Form_load(...)
{
GetCPUCounter();
}
private void mytimer_Tick(....)
{
string cpuUsage = finalresult.ToString() + "%"
}
方法的完整类,它们将返回内存使用量和总内存:
async
从using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Microsoft.VisualBasic.Devices;
public class Memory
{
public int TotalRamInMb;
public int TotalRamInGb;
public double UsedRam;
public int UsedRamPercentage;
public string GetTotalRam()
{
var CI = new ComputerInfo();
var mem = ulong.Parse(CI.TotalPhysicalMemory.ToString());
int Mb = Convert.ToInt16(mem / (double)(1024 * 1024));
TotalRamInMb = Mb;
if (Mb.ToString().Length <= 3)
return Mb.ToString() + " MB physical memory";
else
{
return (Convert.ToInt16(Mb / (double)1024)).ToString() + " GB physical memory";
TotalRamInGb = Convert.ToInt16(Mb / (double)1024);
}
}
public async void GetUsedRam()
{
double URam;
Process[] allProc = Process.GetProcesses();
foreach (var proc in allProc)
URam += ((proc.PrivateMemorySize64) / (double)(1024 * 1024));
UsedRam = URam;
UsedRamPercentage = (UsedRam * 100) / TotalRamInMb;
await Task.Delay(900);
GetUsedRam();
}
}
,UsedRam
,UsedRamPercentage
等变量中获取值...并确保像TotalRamInMb
一样调用GetUsedRam()
1}}然后使用GetCPUCounter
重复获取上述变量的值。
我将通过添加磁盘使用情况检索过程来尽快更新答案。干杯!