假设CPU使用率和内存(进程工作集)的单个实例应用程序,你可以这样做以下:
public static void Main(string[] args)
{
string processName = Process.GetCurrentProcess().ProcessName;
int processorCount = Environment.ProcessorCount;
// Simulate process usage
for (int i = 0; i < processorCount * 2; i++)
{
var t = new Thread(() =>
{
while (true) { Console.WriteLine("Busy..."); }
});
t.IsBackground = true;
t.Start();
}
var cpu = new PerformanceCounter("Process", "% Processor Time");
cpu.InstanceName = processName;
cpu.NextValue();
var ram = new PerformanceCounter("Process", "Working Set");
ram.InstanceName = processName;
float memUsage = (ram.NextValue()/1024)/1024;
Console.WriteLine("Memory Usage: {0}MB", memUsage);
float cpuUsage = cpu.NextValue()/(float)processorCount;
Console.WriteLine("CPU Usage: {0}%", cpuUsage);
}
对于CPU使用率性能计数器第一次调用NextValue
返回0,所以只有第二次调用用于显示值。报告的使用量是所有机器处理器的总和,因此在显示之前计算平均值。
“我不是在寻找第三方分析应用程序,我需要在我的应用程序中有数据” - 这对我没有意义吗? – 2010-03-09 14:48:58
您正在讨论一个分析器。要么使用Visual Studio中内置的那个(如果你有这个版本),要么使用像memprofiler这样的东西。 – 2010-03-09 14:50:30
@Mitch:现在问题更清楚了吗? – Simon 2010-03-09 14:59:06