我正在尝试编写一些可以在硬盘读取数据或写入数据时触发事件的内容。我知道这涉及到使用System.Diagnostics.PerformanceCounter,但我不太了解这个能够自己做到这一点。有人能指出我正确的方向吗?此外,我希望触发的事件返回正在读取或写入的驱动器。任何帮助,将不胜感激。顺便说一下,这是C#。
答案 0 :(得分:8)
以下内容不会创建事件,但您可以将它与计时器一起使用以在托盘中显示信息(根据评论):
using System.Diagnostics;
private PerformanceCounter diskRead = new PerformanceCounter();
private PerformanceCounter diskWrite = new PerformanceCounter();
diskRead.CategoryName = "PhysicalDisk";
diskRead.CounterName = "Disk Reads/sec";
diskRead.InstanceName = "_Total";
diskWrite.CategoryName = "PhysicalDisk";
diskWrite.CounterName = "Disk Writes/sec";
diskWrite.InstanceName = "_Total";
_Total
适用于所有磁盘...以获取可用磁盘的特定实例名:
var cat = new System.Diagnostics.PerformanceCounterCategory("PhysicalDisk");
var instNames = cat.GetInstanceNames();
然后,您可以为您感兴趣的每个实例创建一对diskRead
/ diskWrite
...有关如何将其与计时器结合使用的示例,请参阅this。