È possibile ottenere la dimensione della memoria disponibile del sistema in C# .NET? se sì come?Come ottenere la dimensione della memoria di sistema disponibile?
risposta
Utilizzare Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory
.
Fare clic con il tasto destro del mouse sul progetto, Aggiungi riferimento, selezionare Microsoft.VisualBasic
.
Da EggHeadCafe dopo googling per 'c memoria di sistema #'
Sarà necessario aggiungere un riferimento a System.Management
using System;
using System.Management;
namespace MemInfo
{
class Program
{
static void Main(string[] args)
{
ObjectQuery winQuery = new ObjectQuery("SELECT * FROM Win32_LogicalMemoryConfiguration");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(winQuery);
foreach (ManagementObject item in searcher.Get())
{
Console.WriteLine("Total Space = " + item["TotalPageFileSpace"]);
Console.WriteLine("Total Physical Memory = " + item["TotalPhysicalMemory"]);
Console.WriteLine("Total Virtual Memory = " + item["TotalVirtualMemory"]);
Console.WriteLine("Available Virtual Memory = " + item["AvailableVirtualMemory"]);
}
Console.Read();
}
}
}
uscita:
Total Space = 4033036
Memoria fisica totale = 2095172
Memoria virtuale totale = 1933904
Memoria virtuale disponibile = 116280
Win32_LogicalMemoryConfiguration non è disponibile da Vista in poi. Sostituire con CIM_OperatingSystem e utilizzare TotalVisibleMemorySize, TotalVirtualMemorySize ecc. Il codice sopra genera un'eccezione su Win7 e probabilmente anche su Vista. – Canacourse
In seguito al commento di @ Canacourse, consultare: http://msdn.microsoft.com/en-us/library/aa387937(v=vs.85).aspx per informazioni sulla classe CIM_OperatingSystem. –
Utilizzando i contatori delle prestazioni accessibili tramite System.Diagnostics sarà un'opzione.
consultare http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx
Spero che questo aiuti!
Questa risposta è basata su Hans Passant. La proprietà richiesta è AvailablePhysicalMemory in realtà. e (e TotalPhysicalMemory e altri) sono variabili di istanza, quindi dovrebbe essere
new ComputerInfo().AvailablePhysicalMemory
Funziona in C#, ma mi chiedo perché this page dice che per C#, "Questo linguaggio non è supportato o nessun esempio di codice è disponibile ".
Perché nessuno voleva per scriverlo .. – atamanroman
fielding, haha probabilmente! – David
No perché la sua parte del 'My' Namespace utilizzata in Visual Basic! Not C# - Includendo questa dll di Visual Basic esporrai queste scorciatoie sono così carini in VB.NET; E le persone che vanno in C# dopo VB iniziano a mancare. Bella risposta +1 – ppumkin
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
puoi chiamare questo da C#? –
È una classe di framework .NET, disponibile in qualsiasi versione dal 2.0. Il nome dello spazio dei nomi è irrilevante. –
Questa è una pessima soluzione ... :(Non dovrei aggiungere un riferimento a VB per questo ... –