Maximalwert bzw Höchstwert anzeigen

  • VB.NET

    Maximalwert bzw Höchstwert anzeigen

    Hallo Leute

    Was Visual Basic angeht bin ich noch ein absoluter Neuling.
    Learning
    by Doing, verschiedene Guides und das www haben mir schon viel geholfen,
    aber nun hänge ich seit nunmehr fast einem Tag an einem Problem fest
    und ich finde einfach keine Lösung.

    Mit folgendem Code ist es mir gelungen die aktuelle CPU Auslastung darzustellen:
    lblCpulastmax.Text = pcCpulast.NextValue

    Kurze erklärung:
    Die
    Abfrage wird mit einem Timer einmal pro Sekunde getätigt. Die aktuelle
    CPU Auslastung wird über den performence Counter "pcCpulast.NextValue"
    in dem Label "lblCpulastmax.Text" angezeigt.
    Das funktioniert auch wunderbar! :)

    Allerdings
    ist das nicht mein eigentliches Ziel. Ich möchte nämlich garnicht den
    aktuellen Wert im Label haben, sondern den höchsten, der bisher
    ausgelesen wurde.
    Beispiel: Die CPU Auslastung steht bei 10%, so soll im Label 10% stehen. Bei der nächsten Abfrage liegt sie bei 51%, jetzt soll im Label auch 51% stehen. Nun fällt sie auf 2%, im Label soll weiterhin 51% angezeigt werden.

    Bin schon ne ganze Weile am herumprobieren, aber nichts klappt. Echt frustrierend :(

    Nun hoffe ich von euch etwas Hilfe zu bekommen. Ein fertiger Code wäre natürlich ne feine Sache. Aber mir würde es schon reichen wenn mir ein paar Tipps gegeben werden, wie ich an die Sache rangehen muss.
    1. Option Strict On
    2.

    VB.NET-Quellcode

    1. Private lastValue As Integer = 0
    2. Private Sub XXX()
    3. lastValue = Math.Max(pcCpulast.NextValue, lastValue)
    4. lblCpulastmax.Text = lastValue.ToString
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    VB-Fragen über PN werden ignoriert!
    WoW. Das ging ja sehr fix.

    Hab da zwar noch einige Probleme aber wird wohl werden. Jetzt geht nämlich meine aktuelle Anzeige des CPU Wertes nicht mehr :D . Einmal nicht aufgepasst und schon verhunst.

    VB wollte auch deinen Code aus Zeile 3 so nicht akzeptieren. Und hat mir den Vorschlag gemacht ihn so zu schreiben:

    lastValue = CInt(Math.Max(pcCpulast.NextValue, lastValue))


    Ich habe das ganze aber auch mal für meine RAM Abfrage umgesetzt und da funktioniert es auch. :)
    Nun wollte ich da aber auch ein Label mit einem Minimalwert füllen. Habe dazu CInt(Math.Max (....)) in CInt(Math.Min (....)) geändert. Allerdings bleibt der Wert bei 0, obwohl mein RAM deutlich voller als 0MB ist... hat da noch jemand einen Tipp?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ElBarto“ ()

    Anstatt Math.Max() könntest du auch den Bedingungsoperator verwenden.

    VB.NET-Quellcode

    1. Private maxValue As Integer = 0
    2. Private lastValue As Integer = 0
    3. Private Sub XXX()
    4. lastValue = pcCpulast.NextValue
    5. maxValue = if(lastValue > maxValue, lastValue, maxValue)
    6. lblCpulastmax.Text = lastValue.ToString
    7. End Sub
    Kein HP DeskJet bei mir als Avatar.

    VB.NET-Quellcode

    1. Private lastValueMax As Integer = 0
    2. Private lastValueMin As Integer = Integer.MaxValue ' @@@ das hier
    3. Private Sub XXX()
    4. lastValueMax = Math.Max(pcCpulast.NextValue, lastValueMax)
    5. lastValueMin = Math.Min(pcCpulast.NextValue, lastValueMin)
    6. lblCpulastmax.Text = lastValue.ToString
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    VB-Fragen über PN werden ignoriert!