2015-04-19 26 views
10

Potrzebujesz wykonać wolną wolną pamięć co 1 sekundę, więc używam metody i znacznika czasu, ale to się nie zmienia, zawsze pokazuje 8081 MB w tekście etykiety. Jak to zrobić, aby sprawdzać co 1 sekundę? Ponieważ używasz także zmiany pamięci komputera. Oto mój kod:Uzyskaj dostępną wolną pamięć RAM 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

Dostajesz całkowitą pamięć fizyczną zainstalowaną w urządzeniu, a nie wolną pamięć. –

+0

* dostępna * pamięć nie jest taka sama jak * TotalPhysicalMemory * – Plutonix

Odpowiedz

15

Spróbuj z tym ...

zawierać odniesienie do dll Microsoft.VisualBasic:

using Microsoft.VisualBasic.Devices; 

... a następnie aktualizuje etykietę następująco :

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

... albo ...

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

Uwagi:

  1. referencyjne właściwość AvailablePhysicalMemory klasy ComputerInfo zamiast na posesji TotalPhysicalMemory użytego poprzednio.
  2. Metoda getAvailableRAM() nie jest wymagana. Zamień wywołanie na ram_timer_tick z lbl_Avilable_Memory.Text = (ComputerInfo().AvailablePhysicalMemory/1048576) + "mb free";
  3. Warto również wziąć pod uwagę, że metody, które zaczynają się od słowa get, powinny zwrócić wartość. Jeśli metoda miała pozostać, to zamiast tego polecam zmienić jej nazwę na SetLbl_Avilable_Memory().
  4. Podałeś niepoprawnie słowo available w nazwie swojej etykiety.
+0

Dzięki, że poprawiłeś :) Nie wiem, dlaczego nie widziałem tego zbyt długo na biurku, potrzebuję przerwy. Mimo to dziękuję – Jane1990

+0

Nie ma za co. –

+0

Musi zawierać zespół 'Microsoft.VisualBasic', aby zobaczyć' ComputerInfo'. – Contango

Powiązane problemy