PerformanceCounter: Categories and Counters




El programa descrito te llevará a través del proceso de creación y configuración de PerformanceCounter instancias de componentes y su utilización para recuperar las listas de categorías de contador y contadores de rendimiento en el sistema. Un contador de rendimiento es el medio por el cual Windows recopila datos de rendimiento en diferentes recursos del sistema. Windows contiene un conjunto de contadores predefinidos, organizados en categorías, con el que se puede interactuar. Cada categoría y el contador está relacionada con un área específica de la funcionalidad del sistema.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace CPU_II
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void btnGetCategories_Click_1(object sender, EventArgs e)
        {
            System.Diagnostics.PerformanceCounterCategory[] myCat2;
            // Remove the current contents of the list.
            this.lstCategories.Items.Clear();
            // Retrieve the categories.
            myCat2 =
               System.Diagnostics.PerformanceCounterCategory.GetCategories();
            // Add the retrieved categories to the list.
            for (int i = 0; i < myCat2.Length; i++)
            {
                this.lstCategories.Items.Add(myCat2[i].CategoryName);
            }
        }

        private void btnGetCounters_Click_1(object sender, EventArgs e)
        {
            string[] instanceNames;
            System.Collections.ArrayList counters = new
               System.Collections.ArrayList();
            if (this.lstCategories.SelectedIndex != -1)
            {
                System.Diagnostics.PerformanceCounterCategory mycat = new
                   System.Diagnostics.PerformanceCounterCategory(
                   this.lstCategories.SelectedItem.ToString());
                // Remove the current contents of the list.
                this.lstCounters.Items.Clear();
                // Retrieve the counters.
                try
                {
                    instanceNames = mycat.GetInstanceNames();
                    if (instanceNames.Length == 0)
                    {
                        counters.AddRange(mycat.GetCounters());
                    }
                    else
                    {
                        for (int i = 0; i < instanceNames.Length; i++)
                        {
                            counters.AddRange(mycat.GetCounters(instanceNames[i]));
                        }
                    }



                    // Add the retrieved counters to the list.
                    foreach (System.Diagnostics.PerformanceCounter counter
                       in counters)
                    {
                        this.lstCounters.Items.Add(counter.CounterName);
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(
                       "Unable to list the counters for this category:\n"
                       + ex.Message);
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}


//https://msdn.microsoft.com/es-sv/library/2fh4x1xb(v=vs.100).aspx

//https://msdn.microsoft.com/en-us/library/851sb1dy(v=vs.100).aspx


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.