如何在C#中获得特定进程的磁盘使用量(MB/s)?
我可以像这样获得CPU使用率和RAM使用率:
var cpu = new PerformanceCounter("Process", "% Processor Time", ProcessName, true)
var ram = new PerformanceCounter("Process", "Working Set - Private", ProcessName, true);
Console.WriteLine($"CPU = {cpu.NextValue() / Environment.ProcessorCount} %");
Console.WriteLine($"RAM = {ram.NextValue() / 1024 / 1024} MB");
但我找不到任何与磁盘使用有关的信息。
如任务管理器所示:
3条答案
按热度按时间plicqrtu1#
️方法
如上所述here^2:
这个API将告诉你I/O操作的总数以及总字节数。
您可以调用GetProcessIoCounters来获取每个进程的总体磁盘I/O数据-您需要跟踪增量并自行转换为基于时间的速率。
所以,基于this C# tutorial,你可以沿着以下几点做:
使用this将其转换为VB.NET
但是发生(System.ComponentModel.Win32Exception ex)
有些进程似乎真的很难访问。好消息是,在我的情况下,他们中没有多少人(250个中有15个或什么)。
️其他方法和参考
brccelvz2#
您可以使用
GetProcessDiskUsage
API来获取进程IO信息,例如写和读操作的数量以及读或写的总字节数。下面的代码显示了进程磁盘使用情况,单位为MB/s,与任务管理器中类似。edqdpe6u3#
可以使用DriveInfo