Avatar billede lasserasch Juniormester
21. november 2006 - 12:27 Der er 5 kommentarer og
1 løsning

Hvordan finder man aktuelt CPU forbrug i c#

Hejsa.

Hurtigt spørgsmål! Hvordan findes det aktuelle CPU forbrug med C#? Jeg vil gerne finde det ved et timer click, og lægge i en variabel.

Skal have det i procent. Er fordi jeg gerne vil have lavet en applikation, som kigger på forbruget og hvis det har været over 90% i mere end 10 min, så skal den lave en shutdown kommando og genstarte maskinen!


/Lasse
Avatar billede Slettet bruger
21. november 2006 - 14:31 #1
Jeg brugte det her engang, det finder cpu forbrug i %, og en masse info om ram

CounterSample cs1 = new CounterSample();

                PerformanceCounter pc1 = new PerformanceCounter();
                pc1.CategoryName = "Processor";
                pc1.CounterName = "% Processor Time";
                pc1.InstanceName = "_Total";
                cs1 = pc1.NextSample();
                System.Threading.Thread.Sleep(1000);

                int CPUPercent = Convert.ToInt32(CounterSample.Calculate(cs1, pc1.NextSample()));
                uint[] Mem = Info.Memory();

                this.Invoke(m_DelegateAddString1, new Object[] { CPUPercent });
                this.Invoke(m_DelegateAddString2, new Object[] { Convert.ToInt32(Mem[6]) });
                this.Invoke(m_DelegateAddString3, new Object[] { Convert.ToInt32(Mem[3]) });
                this.Invoke(m_DelegateAddString4, new Object[] { Convert.ToInt32(Mem[4]) });
                this.Invoke(m_DelegateAddString5, new Object[] { Convert.ToInt32(Mem[5]) });
                this.Invoke(m_DelegateAddString6, new Object[] { Convert.ToInt32(Mem[0]) });
                this.Invoke(m_DelegateAddString7, new Object[] { Convert.ToInt32(Mem[1]) });
                this.Invoke(m_DelegateAddString8, new Object[] { Convert.ToInt32(Mem[2]) });
Avatar billede Slettet bruger
21. november 2006 - 14:32 #2
Du skal bruge using System.Diagnostics;
Og det skal køre i en lykke for at udregne det
Avatar billede lasserasch Juniormester
21. november 2006 - 23:42 #3
Hej wb-freekill.

Jeg fandt selv løsningen og brugte system.management til det. Brugte følgende kode, som jeg har lagt ind i en Timer der tikker hvert 2 sek. Det fungerer ret godt. Glemte at lukke dette indlæg igen! Sorry...




---------

ManagementClass class1 = new ManagementClass("Win32_Processor");

  foreach (ManagementObject ob in class1.GetInstances())
  {
  Int32 proc_use = Convert.ToInt32(ob.GetPropertyValue("LoadPercentage"));
  }
Men smid et svar, så får du nogle af pointsne for dit indlæg alligevel!

/Lasse
Avatar billede Slettet bruger
22. november 2006 - 09:23 #4
svar :)
Avatar billede lasserasch Juniormester
22. november 2006 - 18:29 #5
Nej, det blev vist til en kommentar og ikke et svar! Send lige et rigtigt svar ik'!
Avatar billede Slettet bruger
22. november 2006 - 18:36 #6
svar;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester