2016-12-29 42 views
2
private int coreCountNum() 
    { 
     int coreCount = 0; 
     foreach (var item in new System.Management.ManagementObjectSearcher("Select NumberOfCores from Win32_Processor").Get()) 
     { 
      coreCount += int.Parse(item["NumberOfCores"].ToString());  
     } 
     return coreCount; 
    } 
private void button1_Click(object sender, EventArgs e) 
    { 
     coreCount.Text = Convert.ToString(coreCountNum()); 
    } 

这是我的一些代码,我认为可能有一个错误,如果任何人都可以发现一个,请让我知道。点击按钮后,它会在标签上显示核心数量,但会冻结,谢谢。C#代码是冻结窗体,我错过了一个循环?

+0

当你点击的按钮它冻结? – ivamax9

+1

当你调试哪一行产生冻结? – NicoRiff

+0

不,我点击工作按钮并在显示的标签上显示正确数量的芯。之后,当它锁定,这就是为什么我认为我的循环是无用的。 –

回答

0

尝试处置ManagementObjectSearcher明确

private int coreCountNum() 
{ 
    using(var searcher = new System.Management.ManagementObjectSearcher("Select NumberOfCores from Win32_Processor")) 
    { 
     int coreCount = 0; 
     foreach (var item in searcher.Get()) 
     { 
      coreCount += int.Parse(item["NumberOfCores"].ToString());  
     } 
     return coreCount; 
    } 
} 
+0

http://stackoverflow.com/a/2670568/2313116可能他已经从那里复制它 – ivamax9