Samstag, 3. Juli 2010

RAM Auslastung anzeigen

Um mit C# die RAM Auslastung des Computers anzuzeigen, benutzen wir die Klasse PerformanceCounter. Eine genaue Erklärung dieser gibt es im vorigen Post zum Auslesen der CPU Auslastung.
Zum Auslesen der Arbeitsspeicherauslastung wird in diesem Fall jedoch "Memory" als CategoryName festgelegt und "Available MBytes" als CounterName.
Außerdem braucht NextValue() keinen Referenzpunkt, das einmalige Aufrufen der Funktion liefert bereits das richtige Ergebnis.
Ein PerformanceCounter mit oben beschriebenen Eigenschaften liest nicht exakt die RAM Auslastung aus, sondern genauer gesagt die Größe des RAMs, die noch nicht von Programmen belegt ist (in MB), d.h. den freien Speicherplatz im Arbeitsspeicher.
Im Taskmanager wird diese Größe im Reiter "Systemleistung" unter "Physikalischer Speicher - Verfügbar" angezeigt.
Und jetzt das Beispielprogramm:

// hiervor die üblichen using Anweisungen
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        PerformanceCounter RAMCounter = new PerformanceCounter(); // Instanz der Klasse PerformanceCounter

        private void Form1_Load(object sender, EventArgs e)
        {
            // RAMCounter mit beschriebenen Werten initialisieren
            RAMCounter.CategoryName = "Memory";
            RAMCounter.CounterName = "Available MBytes";
        }

        // beim Klick auf einen Button wird im Beispielprogramm die RAM - Auslastung abgefragt
        private void button1_Click(object sender, EventArgs e)
        {
            GetRAMUsage();
        }

        private void GetRAMUsage()
        {
            // das Ergebnis von NextValue() wird per MessageBox angezeigt
            MessageBox.Show((RAMCounter.NextValue()).ToString());
        }
    }
}

Keine Kommentare:

Kommentar veröffentlichen