zoukankan      html  css  js  c++  java
  • C#实现cpu信息的查询

     1 class CpuHelper
     2     {
     3 
     4         #region 变量、属性
     5         private static float cpuRate=0f;//声明cpu使用率变量
     6 
     7         public static float CpuRate
     8         {
     9             get { return cpuRate; }
    10             set { cpuRate = value; }
    11         }
    12         private static Thread hThread = null;//获取CPU使用率的线程
    13         private static bool isRunning = false;//线程状态的标志
    14 
    15         private const string CategoryName = "Processor";
    16         private const string CounterName = "% Processor Time";//PerformanceCounter三个参数
    17         private const string InstanceName = "_Total";
    18 
    19         #endregion
    20 
    21         #region 获取CPU硬件信息
    22 
    23         /// <summary>
    24         /// 获取当前电脑CPU的频率
    25         /// </summary>
    26         /// <returns></returns>
    27         public static int GetCPUFrequency()
    28         {
    29             RegistryKey r = Registry.LocalMachine.OpenSubKey(@"HARDWAREDESCRIPTIONSystemCentralProcessor");
    30             object c = r.GetValue("~MHz");
    31             int CpuFrequency = (int)c;
    32             return CpuFrequency;
    33         }
    34 
    35 
    36         #endregion
    37 
    38         #region 获取CPU的使用率
    39         /// <summary>
    40         /// 获取CPU使用率信息,由于CPU使用率是即时信息,采用线程获取
    41         /// </summary>
    42         /// <returns></returns>
    43         public static float GetCpuRate()
    44         {
    45             if (!isRunning && hThread == null)
    46             {
    47                 isRunning = true;
    48                 hThread = new System.Threading.Thread(new System.Threading.ThreadStart(CpuWork));
    49                 if (hThread != null)
    50                 {
    51                     hThread.Start();
    52                 }
    53             }
    54             return cpuRate;
    55         }
    56 
    57         /// <summary>
    58         /// 停止获取线程
    59         /// </summary>
    60         public static void StopGetCpuWork()
    61         {
    62             isRunning = false;
    63 
    64             if (hThread != null)
    65             {
    66                 if (hThread.IsAlive)
    67                     hThread.Abort();
    68 
    69                 hThread = null;
    70             }
    71         }
    72 
    73         /// <summary>
    74         /// 
    75         /// </summary>
    76         private static void CpuWork()
    77         {
    78             try
    79             {
    80                 PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);
    81                 while (isRunning)
    82                 {
    83                     System.Threading.Thread.Sleep(1000); // wait for 1 second
    84                     float cpuLoad = pc.NextValue();
    85                     cpuRate = cpuLoad;
    86                 }
    87             }
    88             catch (Exception ex)
    89             {
    90                 Console.WriteLine("获取CPU工作线程方法 异常:" + ex.Message);
    91             }
    92         }
    93 
    94         #endregion
    95     }
    View Code
  • 相关阅读:
    递归调用简单的讲解
    有关杭电acm问题的分类
    【jquery】切换标题与内容/点击后动态切换当前状态
    将数组某键值抽出作为新数组
    table表格制作
    如何导入大sql文件到mysql数据库
    二维数组按照某一键值进行排序
    利用PHP输出某一目录所有文件
    php结合js动态获取空间时间
    ie6不支持minheight的解决方案
  • 原文地址:https://www.cnblogs.com/liehuochongsheng/p/3757538.html
Copyright © 2011-2022 走看看