post icon

Obtener Información del rendimiento del CPU, Memoria y Discos con C#

Obtener información del estado de la PC con C# al más puro estilo del Administrador de Tareas (Task Manager) veremos como lograrlo en pocas líneas.

Ésta labor tiene varios caminos que conducen a Roma, así que veremos sólo uno para cada caso, el que a mi parecer y pruebas fueron los más eficientes, rápidos y menos líneas conllevaban.

Obtener uso del Procesador

using System.Diagnostics;
.
.
.

PerformanceCounter cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "_Total";

// siempre devolverá 0 la primera vez
cpuCounter.NextValue();
// debemos pausar el hilo para obtener el uso del procesador
System.Threading.Thread.Sleep(1000);
// con ésto leemos el valor real de uso del procesador
dynamic secondValue = cpuCounter.NextValue();

Obtener uso de la Memoria RAM

Para este caso hay que agregar como referencia al proyecto el ensamblado “Microsoft.VisualBasic

var pcInfo = new Microsoft.VisualBasic.Devices.ComputerInfo();

Console.Write("Memoria Fisica Total: " +
	pcInfo.TotalPhysicalMemory +
	"Memoria Virtual Total: " +
	pcInfo.TotalVirtualMemory +
	"Memoria Fisica Disponible: " +
	pcInfo.AvailablePhysicalMemory +
	"Memoria Virtual Disponible: " +
	pcInfo.AvailableVirtualMemory);
	//incluso se puede obtener otros datos como el
	//nombre del OS, version y plataforma

Obtener uso de los dispositivos de almacenamientos

using System.IO;
.
.
.

DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
	if (drive.IsReady) // evalua si el dispositivo esta listo
		Consolo.Write("Nombre: " +
			drive.Name +
			"Etiqueta: " +
			drive.VolumeLabel +
			"Tamaño Total: " +
			drive.TotalSize +
			"Espacio Libre: " +
			drive.TotalFreeSpace +
			"Espacio Usado: " +
			drive.TotalSize - drive.TotalFreeSpace
			);
}    
29 febrero 2012

Comentarios desde Facebook:

  1. avatar
    Anthony COSTA RICA Mozilla Firefox Ubuntu Linux
    25 julio 2012 at 01:20 #

    EXCELENTE

Responder