WebElektronika

Számítógép teljesítményének monitorozása C# nyelv segítségével

person access_time 2016.08.03.
Elkészítünk most C# nyelven egy olyan alkalmazást, amelynek segítségével a számítógépünk memóriáját, processzorának, illetve egyéb perifériájának a teljesítménye követhető nyomon.


Bizonyára már minden Windows operációs rendszert használó olvasó találkozott már a Task Manager-rel (1. ábra), és annak különböző megjelenítési adataival.

kep
1. ábra   Task Manager
 

Nézzük meg, hogy ezeknek a tulajdonságoknak egy részét hogyan tudjuk megjeleníteni egy C# nyelven készített alkalmazással.

Ehhez szükségünk van a PerformanceCounter és a PerformanceCounterCategory oszályokra, illetve a PerformanceCounter osztályban található NextValue metódusra.

Hozzunk létre egy Console projektet (ConsoleTeljesitmeny1) a Visual Studio-val. A PerformmanceCounter osztály használatához szükségünk van a "using System.Diagnostics" szerelvényre.

Az "Program" osztályon belül definiálunk az első programban négy példányt (CPU, ramFree, disk, SYST), amelyeket a Main() metódusban példányosítunk.
A PerformanceCounter osztály példányosításakor hat lehetőség közül választhatunk, ezért láthatunk a négy példány előállításakor különböző konstruktorokat.

Ezután egy eseményt hozunk létre, amely minden 2. másodpercben lefut. Ebben az eseményben írjuk ki a  CPU felhasznált teljesítményét (százalékban), a szabad memória méretét, a sornak a méretét, illetve a logikai disk szabad méretét.

namespace ConsoleTeljesitmeny1
{
    class Program
    {
        public static PerformanceCounter CPU;
        public static PerformanceCounter ramFree;
        public static PerformanceCounter disk;
        public static PerformanceCounter SYST;

        static void Main(string[] args)
        {
            CPU = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
            ramFree = new PerformanceCounter("Memory", "Available MBytes", true);
            disk = new PerformanceCounter("LogicalDisk", "% Free Space", "_Total");
            SYST = new PerformanceCounter("System", "Processor Queue Length");

            System.Threading.Timer t = new System.Threading.Timer(timerCallBack, null, 0, 2000);

            Console.ReadLine();
        }

        private static void timerCallBack(object state)
        {
            Console.WriteLine(CPU.NextValue() + "\t" + ramFree.NextValue() + "\t" + SYST.NextValue() + "\t" + disk.NextValue());
        }
    }
}

 

Az első program futási eredménye látható a második ábrán.

kep
2. ábra   Futási eredmény
 


Ha érdeklődik a cikk teljes tartalma után, kérjük, lépjen be a WebElektronika oldalára.

     Köszönjük.