別のプログラムのいくつかのインスタンスを開く小さな 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();
}
私が得ている出力は次のとおりです。
その間、タスクマネージャーはこれを示しています:
ここで何が欠けているのかわかりません。