C# - 如何在任务管理器中看到的以%为单位获取CPU,内存和磁盘使用情况

时间:2018-01-25 08:30:50

标签: c#-4.0

可以在任务管理器中看到这些参数。

enter image description here

1 个答案:

答案 0 :(得分:0)

答案可能有点大,但它会回答整个问题,除了 DISK USAGE 部分。

以百分比(%)获取CPU利用率

不确定WMI是否可以用于此案例,但我不想使用WMI,因为并非所有计算机都支持WMI。我会尝试使用其他类,例如{解决方案{1}}左右。这是一个示例代码,它将以

返回CPU利用率
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(); } } UsedRamUsedRamPercentage等变量中获取值...并确保像TotalRamInMb一样调用GetUsedRam() 1}}然后使用GetCPUCounter重复获取上述变量的值。

我将通过添加磁盘使用情况检索过程来尽快更新答案。干杯!