PerformanceCounter.NextValue hangs on some machine

2019-02-18 00:22发布

I don't know why, but many computers hangs on following operation:

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);
}

On some computes program hangs completely on first call of UpdateStats(), others experiencing 100% CPU load but program works (slowly). Other counters like new PerformanceCounter("Processor", "% Processor Time", "_Total") seems to work fine.

Any suggwstions why is that?

1条回答
啃猪蹄的小仙女
2楼-- · 2019-02-18 00:34

Removing printer references helped eliminate a hang on the initial

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

Now we get a fresh error message instead of hang so can trace it. From:

Answer about printer drivers

We had two similar dell laptops (one newer), both with Windows 8, MVSV 2013, and IIS Express 8. One would hang, one would not.

查看更多
登录 后发表回答