我正在尝试在控制台应用中显示一些系统诊断信息,所以一旦我知道它显示,我就可以发送SMTP电子邮件。
当我打电话给它时,它显示的是 system.diagnoistics.performancecounter system.diagnoistics.performancecounter
public static void GetUsageInformation()
{
cpu = new PerformanceCounter();
cpu.CategoryName = "Processor";
cpu.CounterName = "% Processor Time";
cpu.InstanceName = "_Total";
ram = new PerformanceCounter("Memory", "Available Mbytes");
Console.WriteLine(cpu);
Console.WriteLine(ram);
}
你能提供一些我在这里做得不正确的帮助吗?我确信它和我过去几天遇到的其他事情一样非常简单。
答案 0 :(得分:1)
这里发生的事情Console.WriteLine
正在显示PerformanceCounter
个对象的字符串表示形式,这些对象是Console.WriteLine()
在内部调用ctr.ToString()
获得的,这确实是System.Diagnostics.PerformanceCounter
。我认为你想要的是你的PerformanceCounter
类的属性的字符串表示。
您可以直接WriteLine属性,ala ...
Console.WriteLine(cpu.CategoryName);
Console.WriteLine(cpu.CounterName);
// etc...
或使用反射。这将让你开始......
PropertyInfo[] properties = ctr.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
Console.Write(property.Name + ":\t");
Console.WriteLine(property.GetValue(ctr).ToString());
}