绩效柜台类别名称? (C#)

我正在尝试在性能计数器中编程到我的C#应用​​程序中,该应用程序启动另一个进程并检查该已启动进程的处理器使用情况。 据我了解,性能计数器类要求我分配类别名称,计数器名称和进程名称。 我可以很容易地获得流程名称,但是在互联网上是否有某种类型的列表,其中包含我可以分配的所有类别和计数器名称? 我试过在MSDN上搜索这样的东西,但我没找到任何东西。

感谢您的帮助!

我想你想知道你可以监控的过程的哪些方面。 此处提供了过程性能计数器列表但是您可以使用GetCategories静态方法列出计算机中的所有类别,或者您可以更具体,并为“过程”类别创建PerformanceCategory并使用GetCounters获取列表所有柜台都可用。 希望这可以帮助。

我已经创建了一个方法来显示CriGoT上面写的内容,这是一个小捷径。

private static void GetAllCounters(string categoryFilter) { var categories = PerformanceCounterCategory.GetCategories(); foreach (var cat in categories) { if (categoryFilter != null && categoryFilter.Length > 0) { if (!cat.CategoryName.Contains(categoryFilter)) continue; } Console.WriteLine("Category {0}", cat.CategoryName); try { var instances = cat.GetInstanceNames(); if (instances != null && instances.Length > 0) { foreach (var instance in instances) { //if (cat.CounterExists(instance)) //{ foreach (var counter in cat.GetCounters(instance)) { Console.WriteLine("\tCounter Name {0} [{1}]", counter.CounterName, instance); } //} } } else { foreach (var counter in cat.GetCounters()) { Console.WriteLine("\tCounter Name {0}", counter.CounterName); } } } catch (Exception) { // NO COUNTERS } } Console.ReadLine(); } 

希望这有帮助。

您可以随意分配它们。 性能监视器将显示您选择的任何类别以及您为特定需求选择的计数器名称。

 CounterCreationDataCollection ccdc = new CounterCreationDataCollection(); ccdc.Add(new CounterCreationData("Counter Title", "Counter Description", PerformanceCounterType.NumberOfItems32)); PerformanceCounterCategory.Create("My Counter Category", "Category Description", PerformanceCounterCategoryType.Unknown, ccdc); 

对于那些想要快速浏览并找到所需的计数器,这里有一个快速表单,显示三个列表框|Categories|Instances|Counters| 以及在计时器上更新的计数器值。 带filter。

在此处输入图像描述

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Windows.Forms; namespace CountersListPreview { internal static class CounterPreview { [STAThread] private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form f = new CountersListPreviewForm(); Application.Run(f); } } internal class CountersListPreviewForm : Form { public CountersListPreviewForm() { InitializeComponent(); } private PerformanceCounterCategory[] allCats; private string[] instances; private PerformanceCounter[] counters; private PerformanceCounter counter; private Timer TitleRefreshTimer; private void Form1_Load(object sender, EventArgs e) { allCats = PerformanceCounterCategory.GetCategories(); listBox1.DataSource = allCats; listBox1.DisplayMember = "CategoryName"; listBox1.SelectedIndexChanged += On_CatChange; listBox2.SelectedIndexChanged += On_InstChange; listBox3.SelectedIndexChanged += On_CounterChange; textBox2.TextChanged += On_CatFilterChanged; textBox3.TextChanged += On_InstFilterChanged; textBox4.TextChanged += On_CounterFilterChanged; TitleRefreshTimer = new Timer(); TitleRefreshTimer.Tick += On_Timer; TitleRefreshTimer.Interval = 500; TitleRefreshTimer.Start(); } private void On_Timer(object sender, EventArgs e) { textBox1.Text = counter != null ? counter.NextValue().ToString() : ""; } // --------------- SELECTION CHANGE ------------------ private void On_CatChange(object sender, EventArgs e) { var cat = listBox1.SelectedItem as PerformanceCounterCategory; listBox2.DataSource = instances = cat.GetInstanceNames(); } private void On_InstChange(object sender, EventArgs e) { var cat = listBox1.SelectedItem as PerformanceCounterCategory; var inst = listBox2.SelectedItem as string; listBox3.DataSource = counters = cat.GetCounters(inst); listBox3.DisplayMember = "CounterName"; } private void On_CounterChange(object sender, EventArgs e) { counter = listBox3.SelectedItem as PerformanceCounter; On_Timer(null, null); } // --------------- FILTERS ------------------ private void On_CatFilterChanged(object sender, EventArgs e) { var filter = textBox2.Text; listBox1.DataSource = !string.IsNullOrEmpty(filter) ? allCats.Where(cat => cat.CategoryName.ToLower().Contains(filter.ToLower())).ToArray() : allCats; } private void On_InstFilterChanged(object sender, EventArgs e) { var filter = textBox3.Text; listBox2.DataSource = !string.IsNullOrEmpty(filter) ? instances.Where(inst => inst.ToLower().Contains(filter.ToLower())).ToArray() : instances; } private void On_CounterFilterChanged(object sender, EventArgs e) { var filter = textBox4.Text; listBox3.DataSource = !string.IsNullOrEmpty(filter) ? counters.Where(c => c.CounterName.ToLower().Contains(filter.ToLower())).ToArray() : counters; } // --------------- FORM AND LAYOUT ------------------ private readonly IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && components != null) components.Dispose(); base.Dispose(disposing); } #region Windows Form Designer generated code private void InitializeComponent() { this.listBox1 = new System.Windows.Forms.ListBox(); this.listBox2 = new System.Windows.Forms.ListBox(); this.listBox3 = new System.Windows.Forms.ListBox(); this.textBox1 = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.textBox2 = new System.Windows.Forms.TextBox(); this.textBox3 = new System.Windows.Forms.TextBox(); this.textBox4 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // listBox1 // this.listBox1.FormattingEnabled = true; this.listBox1.Location = new System.Drawing.Point(12, 38); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(351, 524); this.listBox1.TabIndex = 3; // // listBox2 // this.listBox2.FormattingEnabled = true; this.listBox2.Location = new System.Drawing.Point(369, 38); this.listBox2.Name = "listBox2"; this.listBox2.Size = new System.Drawing.Size(351, 524); this.listBox2.TabIndex = 3; // // listBox3 // this.listBox3.FormattingEnabled = true; this.listBox3.Location = new System.Drawing.Point(726, 38); this.listBox3.Name = "listBox3"; this.listBox3.Size = new System.Drawing.Size(351, 524); this.listBox3.TabIndex = 3; // // textBox1 // this.textBox1.Location = new System.Drawing.Point(726, 568); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(351, 20); this.textBox1.TabIndex = 4; // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(606, 571); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(114, 13); this.label1.TabIndex = 5; this.label1.Text = "Counter Value (500ms)"; // // textBox2 // this.textBox2.Location = new System.Drawing.Point(12, 12); this.textBox2.Name = "textBox2"; this.textBox2.Size = new System.Drawing.Size(351, 20); this.textBox2.TabIndex = 4; // // textBox3 // this.textBox3.Location = new System.Drawing.Point(369, 12); this.textBox3.Name = "textBox3"; this.textBox3.Size = new System.Drawing.Size(351, 20); this.textBox3.TabIndex = 4; // // textBox4 // this.textBox4.Location = new System.Drawing.Point(726, 12); this.textBox4.Name = "textBox4"; this.textBox4.Size = new System.Drawing.Size(351, 20); this.textBox4.TabIndex = 4; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; //this.BackColor = System.Drawing.SystemColors.; this.ClientSize = new System.Drawing.Size(1090, 597); this.Controls.Add(this.label1); this.Controls.Add(this.textBox4); this.Controls.Add(this.textBox3); this.Controls.Add(this.textBox2); this.Controls.Add(this.textBox1); this.Controls.Add(this.listBox3); this.Controls.Add(this.listBox2); this.Controls.Add(this.listBox1); //this.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.Name = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); this.PerformLayout(); } #endregion private ListBox listBox1; private ListBox listBox2; private ListBox listBox3; private TextBox textBox1; private Label label1; private TextBox textBox2; private TextBox textBox3; private TextBox textBox4; } }