在C#控制台应用程序中显示系统诊断信息时出现故障

在C#控制台应用程序中显示系统诊断信息时出现故障,c#,console-application,C#,Console Application,我正在尝试在控制台应用程序中显示一些系统诊断信息,以便在我知道它已显示后,可以向其发送SMTP电子邮件 当我叫它时,它显示的是 系统、诊断、性能计数器 系统、诊断、性能计数器 public static void GetUsageInformation() { cpu = new PerformanceCounter(); cpu.CategoryName = "Processor"; cpu.Counter

我正在尝试在控制台应用程序中显示一些系统诊断信息,以便在我知道它已显示后,可以向其发送SMTP电子邮件

当我叫它时,它显示的是 系统、诊断、性能计数器 系统、诊断、性能计数器

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

你能提供一些帮助,我在这里做得不对吗?我相信这和我最近几天遇到的其他事情一样非常简单。

这里发生的是
控制台。WriteLine
显示您的
性能计数器对象的字符串表示形式,这些对象是通过
控制台。WriteLine()
内部调用
ctr.ToString()
获得的,这实际上是
System.Diagnostics.PerformanceCounter
。我相信您需要的是
PerformanceCounter
类属性的字符串表示

您可以直接写入属性,例如

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

console.writeline(cpu.CategoryName);等所有这些都只显示我加在引号中的文字信息。这是正确的行为。你希望它们显示什么?我希望实际的处理器计时。也许我完全错了,真的。查看
过程
课程。