这是以前这上面不知名朋友的文章
 
using System;
using System.Diagnostics;
using System.Threading;
public class CpuLoadInfo 
{ // auxiliary print methods 
 private static void Say ( string txt ) 
 {
  Console.WriteLine(txt);
 } // auxiliary print methods 
 private static void Say() 
 {
  Say("");
 } // The main method. Command line arguments are ignored.
 [STAThread]
 public static void Main() 
 {
  Say("$Id: CpuLoadInfo.cs,v 1.2 2002/08/17 17:45:48 rz65 Exp $");
  Say();  Say("Attempt to create a PerformanceCounter instance:");
  Say("Category name = " + CategoryName);
  Say("Counter name  = " + CounterName);
  Say("Instance name = " + InstanceName);
  PerformanceCounter pc
   = new PerformanceCounter(CategoryName,CounterName,InstanceName);
  Say("Performance counter was created.");
  Say("Property CounterType: " + pc.CounterType);
  Say();  Say("Property CounterHelp: " + pc.CounterHelp);
  Say();
  Say("Entering measurement loop.");  while (true) 
  {
   Thread.Sleep(1000); // wait for 1 second
   float cpuLoad = pc.Nextvalue();
   Say("CPU load = " + cpuLoad + " %.");
  }
 }     // constants used to select the performance counter.
 private const string CategoryName = "Processor";
 private const string CounterName  = "% Processor Time";
 private const string InstanceName = "_Total";

 

解决方案 »

  1.   

    用PerformanceCounter得到的应该很准的
    Windows自带的Performance的查看器是使用同样的WMI接口
    我用C#写的模仿的TaskManager的程序(没写完)里也是用的Performance Counter控件,
    和TaskMan的比较,差不多
      

  2.   

    using System.Diagnostics;PerformanceCounter cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
    PerformanceCounter CLRmemoery = new PerformanceCounter(".NET CLR Memory", "# Bytes in all Heaps", Application.ProductName);
    PerformanceCounter memory = new PerformanceCounter("Memory", "% Committed Bytes In Use", "");

    float cpuUsage = this.cpu.NextValue();
    float memoryUsage = this.memory.NextValue();
      

  3.   

    内存取出的值比较正确,但cpu的值总是0
      

  4.   

    2003-06-09 15:03:42 发的问题
    现在已经 6-12 16:02了问题没有解决,狂晕ing