freien Arbeitsspeicher ermitteln
-
Grüßt Euch,
ich weiß nicht ob es das Thema schon mal gab, und mit der neuen Suchfunktion komme ich nicht wirklich zurecht.
Also ich fang einfach mal an: Ich bin derzeit mit einem Bildschirmschoner beschäftigt. Eigentlich ist er auch schon fertig, ich will nur noch bestimmte Bereiche verbessern. Dazu gehört auch das ermitteln des freien Arbeitsspeichers. Über die WMI habe ich problemlos den vorhandenen Speicher im System ermittelt. Für den freien Arbeitsspeicher gehe ich bis jetzt über die Klasse "PerfomanceCounter"
PerformanceCounter ramCounter; ramCounter = new PerformanceCounter("Memory", "Available MBytes"); ramCounter.NextValue();
Das Beispiel habe ich von dieser Seite hier: http://zamov.online.fr/EXHTML/CSharp/CSharp_927308.html
An sich funktioniert das einwandfrei. Mein Problem damit ist nur, dass ich davon nur die MByte bekomme, würde aber gerne die Byte bekommen, da dies ein bischen genauer ist. Unter C++ konnte man dafür ja über Memstate gehen:
MEMORYSTATUS MemState; MemState.dwLength = sizeof(MEMORYSTATUS); GlobalMemoryStatus(&MemState);
Gibt es unter C# eine Möglichkeit die Bytes zu ermitteln. KBytes würden mir auch schon reichen, denn bis jetzt habe nach dem Komma immer 00 stehen.
Gruß
Markus Seidl
-
Äh, vielleicht verstehe ich da was falsch aber: Warum rechnest du nicht einfach von MByte zu Kbyte oder Byte um?
-
Danke für die Antwort
ich hab in der Schule aufgepasst. Letztendlich zeige ich es in Mbyte an. Mein Problem damit ist nur, dass ich am Ende nicht wie gewünscht z.B. 221,21 Mbyte stehen habe, sondern 221,00 Mbyte.
Aber Danke für die Antwort :). Mittlerweile habe ich doch einen Weg über die WMI gefunden. Gefällt mir allerdings nicht, weil ich den Wert jede Sekunde auslese, und das doch ein mehr Systemleistung kostet als eine API Funkion.
Gibt es vielleicht eine Möglichkeit, dass ich an die Memstate Lösung über PInvoke rankomme. Mein Denkproblem ist mit dem Zeiger der dabei verwendet wird. Man kann ja zwar Zeiger in C# verwenden, was ja dann aber unter unsafe läuft, und das möchte ich vermeiden (Speicherleichen machen wenig freude
)
Gruß
Markus Seidl