使用PerformanceCounters定位特定驱动器

Ice*_*ind 5 .net c# performancecounter

大家好,我有以下代码:

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";
Run Code Online (Sandbox Code Playgroud)

此代码记录每秒磁盘读取数和每秒磁盘写入数,它可以正常工作.我的问题是,如何跟踪一个特定驱动器的读写?我的计算机中有3个硬盘驱动器,现在它总共返回了所有3个驱动器.我如何具体选择我想要监控的驱动器?

Hen*_*man 9

您应该将"_Total"替换为相应的驱动器号:

  diskRead.InstanceName = "0";
Run Code Online (Sandbox Code Playgroud)

应该检查一下.您需要指定名称"0 C: D:".让人惊讶.

编辑2:

你可以用这个名字

    var cat = new System.Diagnostics.PerformanceCounterCategory("PhysicalDisk");
    var instNames = cat.GetInstanceNames();
Run Code Online (Sandbox Code Playgroud)

过滤掉以数字开头的名称是很安全的.(_Total也在列表中).