Guten Tag
Ich verwende einen Performace Counter um die CPU Auslastung anzuzeigen. Dies funktionierte Problemlos. Doch heute, obwohl ich nichts am Code verändert habe, bekomme ich diese Fehlermeldung:
System.NullReferenceException was unhandled Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Hier ist der Code:
public void Counter()
{
counter = new PerformanceCounter();
counter.CategoryName = "Processor";
counter.CounterName = "% Processor Time";
counter.InstanceName = "_Total";
}
public double GetCounter()
{
return counter.NextValue(); // hier ist der Fehler
}
Ich hoffe ihr könnt mir helfen, denn ich weiß einfach nicht was falsch ist, da ich ja eigneltich am Code nichts verändert habe..
Schöne Grüße
Hi,
kann es sein, dass "public void Counter()" eig. ein Konstruktor sein soll ?
Wenn ja: Lass das "void" weg - Andernfalls solltest du dafür sorgen, dass die
Funktion auch aufgerufen wird...
Gruß
Achim
Hallo kbert,
egal worum es geht. Das vorgehen bei einer NullReferenceException ist immer das gleiche und in der FAQ beschrieben: [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt [finden und beheben]. Im konkreten Fall wird vermutlich GetCounter aufgerufen, ohne dass vorher Counter aufgerufen wurde.
herbivore
Alles klar, vielen dank das war die Lösung
Jedoch bekomme ich jetzt immer einmal 0 und einmal 100 zurück
public CpuUtilisation()
{
Counter();
while (true)
{
Debug.WriteLine(GetCounter());
}
}
public void Counter()
{
counter = new PerformanceCounter();
counter.CategoryName = "Processor";
counter.CounterName = "% Processor Time";
counter.InstanceName = "_Total";
}
public double GetCounter()
{
return counter.NextValue();
}
ergibt die ausgabe:
0
100
100
0
100
100
0
100
0
100
100
0
100
0
...
Weiß da jemand was falsch läuft?
lg
Hallo kbert,
Weiß da jemand was falsch läuft?
Ich vermute mal dass du da die 100% / 0% stehen hast weil du den ganzen Thread blockierst.
Du gibst mit der while-Schleife mit voller Rechenleistung den Wert aus ohne Pause
Verwende für die Ausgabe einen Timer, dann sollte das Problem gelöst sein.
Generell siehe: [FAQ] Warum blockiert mein GUI?
Gruß
Michael