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]));
}
}