地铁二期项目正式开始

Hard.cs 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6. using System.Text;
  7. namespace YTSoft.Common
  8. {
  9. public class SystemInfo
  10. {
  11. public static PerformanceCounter cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
  12. public static PerformanceCounter IOW = new PerformanceCounter("PhysicalDisk", "Disk Writes/sec", "_Total");
  13. public static PerformanceCounter IOR = new PerformanceCounter("PhysicalDisk", "Disk Reads/sec", "_Total");
  14. public string GetCpuPerformancevalue()
  15. {
  16. float cpuPer = cpu.NextValue();//Environment.ProcessorCount
  17. float w = IOW.NextValue();
  18. float r = IOR.NextValue();
  19. MEMORY_INFO MemInfo = new MEMORY_INFO();
  20. GlobalMemoryStatus(ref MemInfo);
  21. float memoryPer = MemInfo.dwMemoryLoad;
  22. if (cpuPer > 90)
  23. {
  24. cpuPer = cpuPer*0.9f;
  25. }
  26. return string.Format("【CPU使用率:{0}%--内存使用率:{1}%--读每秒{2}--写每秒{3}】", cpuPer, memoryPer,r,w);
  27. // return new Tuple<float, float>(cpuPer, memoryPer);
  28. }
  29. public static Tuple<float, float> GetCpuPerformance()
  30. {
  31. float cpuPer = cpu.NextValue();//Environment.ProcessorCount
  32. MEMORY_INFO MemInfo = new MEMORY_INFO();
  33. GlobalMemoryStatus(ref MemInfo);
  34. float memoryPer = MemInfo.dwMemoryLoad;
  35. return new Tuple<float, float>(cpuPer, memoryPer);
  36. }
  37. [DllImport("kernel32")]
  38. public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
  39. [DllImport("kernel32")]
  40. public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
  41. [DllImport("kernel32")]
  42. public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
  43. [DllImport("kernel32")]
  44. public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
  45. }
  46. //定义CPU的信息结构
  47. [StructLayout(LayoutKind.Sequential)]
  48. public struct CPU_INFO
  49. {
  50. public uint dwOemId;
  51. public uint dwPageSize;
  52. public uint lpMinimumApplicationAddress;
  53. public uint lpMaximumApplicationAddress;
  54. public uint dwActiveProcessorMask;
  55. public uint dwNumberOfProcessors;
  56. public uint dwProcessorType;
  57. public uint dwAllocationGranularity;
  58. public uint dwProcessorLevel;
  59. public uint dwProcessorRevision;
  60. }
  61. //定义内存的信息结构
  62. [StructLayout(LayoutKind.Sequential)]
  63. public struct MEMORY_INFO
  64. {
  65. public uint dwLength;
  66. public uint dwMemoryLoad;
  67. public uint dwTotalPhys;
  68. public uint dwAvailPhys;
  69. public uint dwTotalPageFile;
  70. public uint dwAvailPageFile;
  71. public uint dwTotalVirtual;
  72. public uint dwAvailVirtual;
  73. }
  74. //定义系统时间的信息结构
  75. [StructLayout(LayoutKind.Sequential)]
  76. public struct SYSTEMTIME_INFO
  77. {
  78. public ushort wYear;
  79. public ushort wMonth;
  80. public ushort wDayOfWeek;
  81. public ushort wDay;
  82. public ushort wHour;
  83. public ushort wMinute;
  84. public ushort wSecond;
  85. public ushort wMilliseconds;
  86. }
  87. }