类别不存在。为Ram使用创建性能计数器

时间:2016-09-06 11:18:21

标签: memory c++-cli cpu-usage performancecounter

这是代码,我正在尝试运行以获取内存使用。

int main(array<System::String ^> ^args)
{
    PerformanceCounter^ ramCounter;
    try
    {
        Console::WriteLine(L"Hello World");
        ramCounter = gcnew PerformanceCounter("Memory", "Available MBytes");
        Console::WriteLine(L"Memory usgae:"+ramCounter->NextValue()+L"MB");
    }
    catch(Exception^ e)
    {
        Console::WriteLine("Error Message: "+e->Message);
        Console::WriteLine(e->StackTrace);
    }
    finally
    {
        if(ramCounter!=nullptr)
        {
            ramCounter->Close();
        }
        Console::WriteLine("Press any key to exit");
        Console::ReadLine();
    }
    return 0;
}

但是我得到了像

这样的例外
  

错误消息:类别不存在。

     

错误消息堆栈跟踪:
  在System.Diagnostics.PerformanceCounterLib.CounterExists(String   机器,字符串类别,字符串计数器)at   System.Diagnostics.PerformanceCounter.InitializeImpl()at   System.Diagnostics.PerformanceCounter..ctor(String categoryName,   String counterName,String instanceName,Boolean readOnly)at   System.Diagnostics.PerformanceCounter..ctor(String categoryName,   字符串counterName)在main(String [] args)中   c:\ users \ documents \ visual studio   2012 \项目\ consoleapplication1 \ consoleapplication1 \ consoleapplication1.cpp:行   31

对此有任何想法..

1 个答案:

答案 0 :(得分:2)

这可能是本地化问题。在我的机器上,你的代码也没有用,因为它的语言是德语。因此我必须用

创建计数器
 gcnew PerformanceCounter("Arbeitsspeicher", "Verfügbare MB")

您可以通过浏览Performance Monitor中的可用效果计数器来找到本地化名称。

还有一种方法可以以与语言无关的方式检索计数器数据。有关详细信息,请参阅this answer