在C#console app中显示系统诊断信息时出现问题

时间:2017-03-05 17:41:15

标签: c# console-application

我正在尝试在控制台应用中显示一些系统诊断信息,所以一旦我知道它显示,我就可以发送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);
        }

你能提供一些我在这里做得不正确的帮助吗?我确信它和我过去几天遇到的其他事情一样非常简单。

1 个答案:

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