我使用 C# 编写了一个小型 WPF 小部件,以三个小百分比类型条显示当前的 CPU 活动、使用的 RAM 和磁盘活动。为此,我使用了以下 PerformanceCounters:(diskCounter PerformanceCounter 返回当前总磁盘活动(以字节每秒为单位))
private void InitialisePerformanceCounters()
{
cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
totalRam = (int)(new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory / 1024 / 1024);
ramCounter = new PerformanceCounter("Memory", "Available MBytes");
diskCounter = new PerformanceCounter("PhysicalDisk", "Disk Bytes/sec", "_Total", true);
}
问题是,虽然我已经发现如何获取总可用 RAM 来计算已用百分比,但我无法找到如何读取磁盘的“理论”最大数据传输率。我需要它来计算所使用的磁盘传输率的百分比。
任何帮助将不胜感激。
做到这一点的唯一方法就是亲自测试。您可以在应用程序开始时执行以下操作:
byte[] data = new byte[1024];
string path = System.IO.Path.GetTempFileName();
int bytesPerSecond = 0;
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create))
{
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
for (int i = 0; i < 1024; i++) fs.Write(data, 0, data.Length);
fs.Flush();
watch.Stop();
bytesPerSecond = (int)((data.Length * 1024) / watch.Elapsed.TotalSeconds);
}
System.IO.File.Delete(path);
然而,这确实假设Temp
目录位于有问题的磁盘上。如果没有,您必须在要测量的磁盘上创建一个路径。请注意,这是测量写入速度,而不是读取速度。
这有点做作,因为 1MB 写入的数据并不多,但您可以尝试使用更大的数据量;这个概念是一样的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)