Est-il possible d'obtenir la taille de la mémoire système disponible en C# .NET? si oui comment?Comment obtenir la taille de la mémoire système disponible?
Répondre
Utilisez Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory
.
Cliquez avec le bouton droit sur votre projet, Ajouter une référence, sélectionnez Microsoft.VisualBasic
.
De EggHeadCafe après googler 'c mémoire # système'
Vous devrez ajouter une référence à 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();
}
}
}
Sortie:
Espace total = 4033036
Mémoire physique totale = 2095172
Mémoire virtuelle totale = 1933904
Disponible Mémoire virtuelle = 116280
Win32_LogicalMemoryConfiguration n'est pas disponible à partir de Vista. Remplacez par CIM_OperatingSystem et utilisez TotalVisibleMemorySize, TotalVirtualMemorySize etc. à la place. Le code ci-dessus lève une exception sur Win7 et probablement sur Vista aussi. – Canacourse
Suite au commentaire de @ Canacourse, voir: http://msdn.microsoft.com/en-us/library/aa387937(v=vs.85).aspx pour plus d'informations sur la classe CIM_OperatingSystem. –
Utilisation des compteurs de performances accessibles via System.Diagnostics sera une option.
Référez http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx
Hope this helps!
Cette réponse est basée sur celle de Hans Passant. La propriété requise est AvailablePhysicalMemory réellement. et (et TotalPhysicalMemory et d'autres) sont variables d'instance, il devrait donc être
new ComputerInfo().AvailablePhysicalMemory
Il fonctionne en C#, mais je me demande pourquoi this page dit que C#, « Cette langue n'est pas pris en charge ou aucun exemple de code est disponible "
Parce que personne ne voulait pour le saisir .. – atamanroman
fielding, haha probablement! – David
Non- parce que sa partie de l'espace de noms 'My' utilisé dans Visual Basic! Not C# - Y compris cette DLL Visual Basic exposera ces raccourcis t sont si gentils dans VB.NET; Et les gens qui vont en C# après VB commencent à manquer ça. Belle réponse +1 – ppumkin
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
pouvez-vous appeler cela de C#? –
Il s'agit d'une classe d'infrastructure .NET, disponible dans toutes les versions depuis la version 2.0. Le nom de l'espace de noms n'est pas pertinent. –
C'est une mauvaise solution ... :(Ne devrait pas avoir à ajouter une référence à VB pour cela ... –