2010-07-21 29 views

Répondre

51

Utilisez Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory.

Cliquez avec le bouton droit sur votre projet, Ajouter une référence, sélectionnez Microsoft.VisualBasic.

+0

pouvez-vous appeler cela de C#? –

+7

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. –

+6

C'est une mauvaise solution ... :(Ne devrait pas avoir à ajouter une référence à VB pour cela ... –

17

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

+23

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

+3

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. –

21

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 "

+5

Parce que personne ne voulait pour le saisir .. – atamanroman

+0

fielding, haha ​​probablement! – David

+2

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

5
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes"); 
var memory = performance.NextValue();