我现在要在C#程序中读系统的内存使用情况,如总内存,已用内存及可用内存等。另外,我还需要计算某个操作使用的时间。我是一个C#新手,找了好久都没找到合适的类及函数,请各位高手指点。
谢谢。

解决方案 »

  1.   

    系统内存使用情况可以使用性能计数器得到,下面是一个例子,性能计数器的更多内容可以在 计算机管理/系统工具/性能日志和警报/计数器日志/中查到。        static void Main(string[] args)
            {            System.Diagnostics.PerformanceCounter pc = new System.Diagnostics.PerformanceCounter();
                //pc.CategoryName = "Processor";         //这三行是取Cpu占用率的
                //pc.CounterName = "% Processor Time";
                //pc.InstanceName = "_Total";
                pc.CategoryName = "Memory";             //这两行区可用内存数
                pc.CounterName = "Available KBytes";
                long l = 0;
                for (; ; )
                {
                    Console.WriteLine(pc.NextValue());
                    Thread.Sleep(100);
                }
            }
      

  2.   

    获取内存using   System.Runtime.InteropServices;    
       
      [DllImport("kernel32")]    
      public   static   extern   void   GlobalMemoryStatus(ref   MEMORY_INFO   meminfo);    
       
      //定义内存的信息结构    
      [StructLayout(LayoutKind.Sequential)]    
      public   struct   MEMORY_INFO    
      {    
      public   uint   dwLength;    
      public   uint   dwMemoryLoad;    
      public   uint   dwTotalPhys;    
      public   uint   dwAvailPhys;    
      public   uint   dwTotalPageFile;    
      public   uint   dwAvailPageFile;    
      public   uint   dwTotalVirtual;    
      public   uint   dwAvailVirtual;    
      }    
       
       
      //调用GlobalMemoryStatus函数获取内存的相关信息    
      MEMORY_INFO   MemInfo;    
      MemInfo   =   new   MEMORY_INFO();    
      GlobalMemoryStatus(ref   MemInfo);    
      MemoryLoad.Text   =   MemInfo.dwMemoryLoad.ToString()+"%的内存正在使用";    
      TotalPhys.Text   =   "物理内存共有"+MemInfo.dwTotalPhys.ToString()+"字节";    
      AvailPhys.Text   =   "可使用的物理内存有"+MemInfo.dwAvailPhys.ToString()+"字节";    
      TotalPageFile.Text   =   "交换文件总大小为"+MemInfo.dwTotalPageFile.ToString()+"字节";    
      AvailPageFile.Text   =   "尚可交换文件大小为"+MemInfo.dwAvailPageFile.ToString()+"字节";    
      TotalVirtual.Text   =   "总虚拟内存有"+MemInfo.dwTotalVirtual.ToString()+"字节";    
      AvailVirtual.Text   =   "未用虚拟内存有"+MemInfo.dwAvailVirtual.ToString()+"字节";    
      

  3.   


    //System.Environment.TickCount返回系统启动后经过的毫秒数
    int start = System.Environment.TickCount;
    //耗时操作
    //...
    int timeTicks = System.Environment.TickCount - start;
      

  4.   

    "物理内存共有"+MemInfo.dwTotalPhys.ToString()+"字节";