PerformanceCounter.NextValue在某些机器上挂起

时间:2010-05-19 17:58:19

标签: c# system.diagnostics

我不知道为什么,但是许多计算机都停留在以下操作上:

void Init()
{
    net1 = new List<PerformanceCounter>();
    net2 = new List<PerformanceCounter>();
    foreach (string instance in new PerformanceCounterCategory("Network Interface").GetInstanceNames())
    {
        net1.Add(new PerformanceCounter("Network Interface", "Bytes Received/sec", instance));
        net2.Add(new PerformanceCounter("Network Interface", "Bytes Sent/sec", instance));
    }
}

//Once in 1 second
void UpdateStats()
{
    Status.Text = "";
    for (int i = 0; i < net1.Count; i++)                    
         Status.Text += string.Format("{0}/{1} Kb/sec;   ", net1[i].NextValue() / 1024, net2[i].NextValue() / 1024);
}

在某些计算程序中,程序完全挂起UpdateStats()的第一次调用,其他人遇到100%的CPU负载,但程序工作(缓慢)。像new PerformanceCounter("Processor", "% Processor Time", "_Total")这样的其他计数器似乎工作正常。

任何建议为什么会这样?

1 个答案:

答案 0 :(得分:0)

删除打印机参考有助于消除最初的挂起

  new PerformanceCounter("Processor", "% Processor Time", "_Total").  

现在我们收到一条新的错误消息而不是挂起,因此可以追踪它。从:

Answer about printer drivers

我们有两台类似的dell笔记本电脑(一台更新),包括Windows 8,MVSV 2013和IIS Express 8.一台机器人会挂起,一台机器人不会挂机。