环境
更新#1 根据我的分析和几次全面测试。我发现这是让CPU突然达到高使用率的部分。
foreach (Process process in Process.GetProcesses())
{
PerformanceCounter processorTimeCounter =
new PerformanceCounter("Process", "IO Data Bytes/sec",
GetProcessInstanceName(process.Id), true);
processID[processorTimeCounter] = process.Id;
try
{
processorTimeCounter.NextValue();
counterList.Add(processorTimeCounter);
}
catch (System.InvalidOperationException) { }
}
这部分我有4种方法,它们具有不同的PerformanceCounter。
使用的PerformanceCounter i包括% Processor Time
,IO Data Bytes/sec
,Working Set
,% Processor Time
。
我以4种不同的方法进行测试,仅运行此部分(已在此之前和之后添加断点)我的应用的CPU使用率会突然增加。
更新#1
其他代码
public static string GetProcessInstanceName(int process_id)
{
PerformanceCounterCategory cat = new PerformanceCounterCategory("Process");
string[] instances = cat.GetInstanceNames();
foreach (string instance in instances)
{
try
{
using (PerformanceCounter cnt
= new PerformanceCounter("Process", "ID Process", instance, true))
{
int val = (int)cnt.RawValue;
if (val == process_id)
return instance;
}
}
catch (InvalidOperationException) { }
}
return "";
}
请告知我是否可以提供更多信息,或者您是否有 任何问题。