这是代码,我正在尝试运行以获取内存使用。
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
对此有任何想法..
答案 0 :(得分:2)
这可能是本地化问题。在我的机器上,你的代码也没有用,因为它的语言是德语。因此我必须用
创建计数器 gcnew PerformanceCounter("Arbeitsspeicher", "Verfügbare MB")
您可以通过浏览Performance Monitor中的可用效果计数器来找到本地化名称。
还有一种方法可以以与语言无关的方式检索计数器数据。有关详细信息,请参阅this answer。