How to get the CPU Usage in C#?

后端 未结 10 1984
醉酒成梦
醉酒成梦 2020-11-22 06:22

I want to get the overall total CPU usage for an application in C#. I\'ve found many ways to dig into the properties of processes, but I only want the CPU usage of the proce

10条回答
  •  长情又很酷
    2020-11-22 07:20

    A little more than was requsted but I use the extra timer code to track and alert if CPU usage is 90% or higher for a sustained period of 1 minute or longer.

    public class Form1
    {
    
        int totalHits = 0;
    
        public object getCPUCounter()
        {
    
            PerformanceCounter cpuCounter = new PerformanceCounter();
            cpuCounter.CategoryName = "Processor";
            cpuCounter.CounterName = "% Processor Time";
            cpuCounter.InstanceName = "_Total";
    
                         // will always start at 0
            dynamic firstValue = cpuCounter.NextValue();
            System.Threading.Thread.Sleep(1000);
                        // now matches task manager reading
            dynamic secondValue = cpuCounter.NextValue();
    
            return secondValue;
    
        }
    
    
        private void Timer1_Tick(Object sender, EventArgs e)
        {
            int cpuPercent = (int)getCPUCounter();
            if (cpuPercent >= 90)
            {
                totalHits = totalHits + 1;
                if (totalHits == 60)
                {
                    Interaction.MsgBox("ALERT 90% usage for 1 minute");
                    totalHits = 0;
                }                        
            }
            else
            {
                totalHits = 0;
            }
            Label1.Text = cpuPercent + " % CPU";
            //Label2.Text = getRAMCounter() + " RAM Free";
            Label3.Text = totalHits + " seconds over 20% usage";
        }
    }
    

提交回复
热议问题