Erstmal: Gerne
Naja, eigentlich ist so die sauberste Programmierweise. Auf diese Art initialisiere ich die Variable, sie zeigt also auf eine definierte Speicheradresse und belegt Speicher. Bei C# ist das zwar nicht umbedingt notwendig, aber ich hab es mir bei C/C++ so angewöhnt und bin dabei geblieben.
Stimmt, damit bekommst du den insgesamt vorhanden Arbeitsspeicher heraus. Wenn du den aktuell freien haben möchtest, musst du die andere Funktionsweise von oben verwenden. Ich poste sie dir am Besten hier nochmal:
C#-Quelltext
1: 2: 3:
| PerformanceCounter perCnt = new PerformanceCounter("Memory", "Available Bytes"); long availableMemory = (Convert.ToInt64(perCnt.NextValue())); |
Damit wird immer der aktuelle Stand ermittelt. Ahja: Du kannst der PerformanceCounter ruhig als Klassen-Variable deklarieren und dann bei jedem Methodenaufruf (wenn du sicher gestellt hast, dass perCnt != null ist) einfach mit NextValue() den aktuellen Wert abfragen. Leider ist das erste Initialisieren der PerformanceCounters nämlich recht langsam, was es Zeitaufwändig macht, wenn du es bei jedem Methoden-Aufruf neu erzeugst.
P.S.: Hupps, mir ist jetzt erst der Buchstabendreher bei "totalMemroy" aufgefallen
