2015-04-19 9 views
10

È necessario eseguire la memoria disponibile gratuitamente ogni 1 sec, quindi uso il metodo e il timer tick, ma non sta cambiando, mostra sempre 8081 MB nel testo dell'etichetta. Quindi, come farlo controllare ogni 1 sec? Perché anche l'uso della memoria del computer cambia. Ecco il mio codice:Get Available Memoria RAM gratuita C#

// Get Available Memory 
     public void getAvailableRAM() 
     { 
      ComputerInfo CI = new ComputerInfo(); 
      ulong mem = ulong.Parse(CI.TotalPhysicalMemory.ToString()); 
      lbl_Avilable_Memory.Text = (mem/(1024 * 1024) + " MB").ToString(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

      // Get Available Memory Timer 

      ram_timer.Enabled = true; 

      // end memory 

     } 
     private void ram_timer_Tick(object sender, EventArgs e) 
     { 
      getAvailableRAM(); 
     } 
+4

Si sta ottenendo la memoria fisica totale installata nella macchina non la memoria libera. –

+0

* disponibile * la memoria non è la stessa di * TotalPhysicalMemory * – Plutonix

risposta

15

prova con questo ...

Includere un riferimento al Microsoft.VisualBasic dll:

using Microsoft.VisualBasic.Devices; 

... e quindi aggiornare l'etichetta come segue :

lbl_Avilable_Memory.Text = new ComputerInfo().AvailablePhysicalMemory + " bytes free"; 

... o ...

lbl_Avilable_Memory.Text = (ComputerInfo().AvailablePhysicalMemory/1048576) + "mb free"; 

Note:

  1. riferimento la AvailablePhysicalMemory proprietà della classe ComputerInfo in preferenza rispetto alla proprietà TotalPhysicalMemory utilizzato in precedenza.
  2. Il metodo getAvailableRAM() non è obbligatorio. Sostituisci la chiamata in ram_timer_tick con lbl_Avilable_Memory.Text = (ComputerInfo().AvailablePhysicalMemory/1048576) + "mb free";
  3. Vale anche la pena considerare che i metodi che iniziano con la parola get restituiscono un valore. Se il metodo dovesse rimanere, ti consigliamo di rinominarlo a SetLbl_Avilable_Memory().
  4. Hai digitato la parola available in modo errato nel nome della tua etichetta.
+0

Grazie corretto :) Non so perché non l'ho visto così troppo a lungo sulla mia scrivania, ho bisogno di una pausa. Grazie comunque – Jane1990

+0

Sei sempre il benvenuto. –

+0

Deve includere l'assembly 'Microsoft.VisualBasic', per vedere' ComputerInfo'. – Contango

Problemi correlati