Hab das ganze jetzt mal versucht umzusetzen:
Code:
private void InitialisierePerformanceCounter(int cores) // Initialisieren
{
cpuCounter = new PerformanceCounter[cores];
int i = 0;
while (i < cores)
{
cpuCounter[i] = new PerformanceCounter();
cpuCounter[i].CategoryName = "Processor";
cpuCounter[i].CounterName = "% Processor Time";
cpuCounter[i].InstanceName = i.ToString();
i++;
}
}
private float GetCPUusage(int core) // Liefert die aktuelle Auslastung zurück
{
return cpuCounter[core].NextValue();
}
Dann die Progressbaren:
Code:
//Timertick
ProgressBar[] prog = new ProgressBar[8];
prog[0] = progressBar1;
prog[1] = progressBar2;
prog[2] = progressBar3;
prog[3] = progressBar4;
int i = 0;
while(i < timeranz){//timeranz = 4(kommt aus einem anderen Codeteil, deswegen reicht es wenn man weiß Wert ? 4 ;)
InitialisierePerformanceCounter(timeranz);
prog[i].Value = Convert.ToInt32(GetCPUusage(i));
listBox1.Items.Add(GetCPUusage(i).ToString());
prog[i].Update();
i++;
}
Hab momentan nur 4 Kerne deswegen auch nur 4Progressbar's
Weiß jemand wo der Fehler liegen könnte, warum die Progressbar's ständig einen Wert von 0 anzeigen(ebenso die Listbox, die ich eingebaut habe um zu sehen ob es nicht doch an den Progressbar's liegt)
Hab die CPUcounter noch mal manuell initialisiert, auch kein Erfolg.
Komisch war als ich das Ergebnis in einer Messagebox mit ausgegeben habe, also das hier:
private float GetCPUusage(int core) // Liefert die aktuelle Auslastung zurück
{
MessageBox.Show(
cpuCounter[core].NextValue().toString());
return cpuCounter[core].NextValue();
}
Da haben sich die Werte in der Progressbar verändert, aber fragt jetzt nicht wie...
Ka, glaube aber auch das die Werte falsch waren.
Stimmt vlt. an der cpucounter Syntax was nicht?