我正在编写一个小型 winforms 应用程序,它可以打开另一个程序的多个实例。为了优化性能,我正在寻找一种方法来找到最少使用的 CPU 内核来分配进程。
我还希望能够看到每个核心的使用百分比。没什么花哨的,TextBox 或 Label 就可以了。
PerformanceCounter
遇到这些答案后,我一直在尝试使用:
我尝试按如下方式实现这些:
StatusBarOutput.Text = "";
//ignoring posible hyper-threading for simplicity's sake
var coreUsages = new PerformanceCounter[Environment.ProcessorCount];
for (var i = 0; i < coreUsages.Length; i++)
{
coreUsages[i] = new PerformanceCounter("Processor", "% Processor Time", i.ToString());
//using the status bar as output for now, doesn't really matter
StatusBarOutput.Text += " | " + coreUsages[i].CounterName + " ~ " + coreUsages[i].NextValue();
}
我得到的输出是:
同时,任务管理器显示:
不知道我在这里缺少什么。