Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prism Freien Ram ermitteln per .NET (https://www.delphipraxis.net/49808-freien-ram-ermitteln-per-net.html)

Master_BB 16. Jul 2005 09:22


Freien Ram ermitteln per .NET
 
Hallo,
weiß jemand wie man mit .NET die Ramauslastung ermitteln kann ohne auf
Windows Routinen runter zu rutschen?

Greetz

merlin17 16. Jul 2005 10:27

Re: Freien Ram ermitteln per .NET
 
ich gehe folgenden Weg:

namespace System.Managment.ManagmentObject;
Hier gibt es ein Object Win32_OperatingSystem, und über dieses bekommst du die verschiedene Eigenschaften;
u.a. die ganzen MemoryInfo's

Beachte aber, dass am Zielrechner das WMI installiert íst und das Benutzerkonto, das aktuell verwendet
wird, über die WMI- und Systemrechte verfügt.



:-) thomas

Master_BB 16. Jul 2005 10:48

Re: Freien Ram ermitteln per .NET
 
hm schade dachte das es vieleicht eine systemunabhänige variante gibt
wozu .NET ja da ist das wenn ein .NET programm auf linux ausgeführt wird
immerncoh mit der selben routine der ram ausgelesen wird. hängt ja nur
am framework. so ist das ja wieder windows spezifisch

merlin17 16. Jul 2005 11:05

Re: Freien Ram ermitteln per .NET
 
hmmmmm,

zwischen Hardware und Framework liegt ja immer das OS und nur
das hat Zugriff auf die Hardware (ist relativ, ich weiss).
keine Ahnung wie es bei Mono aktuell aussieht, evtl. kannst du hier
ja die Abfrage für die Welten IFen....


:-) thomas

Luckie 16. Jul 2005 11:46

Re: Freien Ram ermitteln per .NET
 
Zitat:

Zitat von merlin17
zwischen Hardware und Framework liegt ja immer das OS

Genau:

Anwendung
Framework
OS
Hardware

Und genau darum sollte man meinen es gäbe was systemunabhängiges. Denn das Framework ist doch genau dazu gedacht, die Funktionsaufrufe des Programmes in die passenden Funktionsaufrufe für das OS umzusetzen.
Wenn ich in der Anwendung FileOpen aufrufe, dann wird unter Windows das Framework CreateFile mit den passenden Parametern aufrufen und unter Linux eben die entsprechende API (Keine Ahnung, wie die unter Linux heißt.). Denn dazu ist es ja da, dass sich der Programmierer, um so was nicht kümmern muss. So warum sollte das jetzt nicht auch bei den Speichermanagmentfunktionen gehen?

Diese Frage ist also berechtig und würde mich auch mal interessieren.

Phoenix 16. Jul 2005 11:57

Re: Freien Ram ermitteln per .NET
 
System.Diagnostics ist Dein Freund. Dort gibt es PerformanceCounter für die Speichergrössen. Die sind übrigens auch schon in dotGNU implementiert und somit Plattformübergreifend verfügbar.

Master_BB 16. Jul 2005 12:01

Re: Freien Ram ermitteln per .NET
 
jop so wie luckie das ausformuliert hab meinte ich das auch.
jede routine die man aufruft wird vom framework dann halt anders fürs
jeweilige betriebssystem interpretiert bzw weitergeleitet

Master_BB 16. Jul 2005 18:24

Re: Freien Ram ermitteln per .NET
 
HIER DIE LÖSUNG
RAM GRÖßE BEKOMMEN

Delphi-Quellcode:
//in MB
function GetMemorySize : int64;
var
  ACounter : PerformanceCounter;
begin
  ACounter := PerformanceCounter.Create('Speicher','Systemcode: Gesamtanzahl Bytes');
  Result  := Convert.ToInt64(ACounter.NextValue * 0.001);
end;
FREIE RAM Bytes bekommen
Delphi-Quellcode:
//in Bytes

function GetFreeMemory : int64;
var
  ACounter : PerformanceCounter;
begin
  ACounter := PerformanceCounter.Create('Speicher','Verfügbare Bytes');
  Result  := Convert.ToInt64(ACounter.NextValue);
end;
könnte man vieleicht in die Code Libary übernehmen oder?

merlin17 16. Jul 2005 19:46

Re: Freien Ram ermitteln per .NET
 
@Luckie,
stimmt, aber durch das "Win32..." war es ja doch nicht OS-getrennt.

System.Diagnostics kannte ich bisher nicht in diesem Zusammenhang;
ist natürlich eleganter und OS-unabhängiger!


:-) thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz