using System;
using System.Diagnostics;
using System.Threading;

public class SystemMonitor
{
    private readonly PerformanceCounter _cpuCounter;
    private readonly PerformanceCounter _ramCounter;
    Stopwatch stopwatch = Stopwatch.StartNew();
    private float HisCPUCounter = 0;

    public SystemMonitor()
    {
        _cpuCounter = new PerformanceCounter(
            "Processor", "% Processor Time", "_Total");

        _ramCounter = new PerformanceCounter(
            "Memory", "Available MBytes");
    }

    public float GetCpuUsage()
    {
        stopwatch.Stop();
        if (stopwatch.ElapsedMilliseconds > 1000)
        {
            stopwatch.Restart();
            HisCPUCounter = _cpuCounter.NextValue();
        }
        else
        {
            stopwatch.Start();
        }
        return HisCPUCounter;
    }

    public float GetAvailableMemory()
    {
        return _ramCounter.NextValue();
    }
}