私は何度も何度も実行したいタスクがあります。私はこれをできるだけ早く呼びたいと思っていますが、私は自分のCPUサイクルを低く保ちたいと思っています。私はバックグラウンドワーカーで睡眠を使用することをお勧めします。しかし、睡眠なしで私のCPUは約55%のままです。私は以下の私のソースの例を持っています。睡眠が適切であれば、どのように睡眠に最適な時間を選ぶか、次の結果からわかるように、私は睡眠の長さに基づいて異なる結果を得ます。ベストプラクティスは、マルチスレッドで同様のバックグラウンド労働者CPUを減らすためにスリープ
BackgroundWorker _Worker = new BackgroundWorker()
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
void Worker_DoWork(object sender, DoWorkEventArgs e)
{
// do my task here
// if i uncomment one of the Sleep below I reduce the CPU like so
// no sleep CPU = 52-58%
// Thread.Sleep(1); CPU = 09-15%
// Thread.Sleep(10); CPU = 02-03%
// Thread.Sleep(100); CPU = 00-01%
}
void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled) { return; }
_Worker.RunWorkerAsync();
}
どのように使用しているかによって、おそらくタイマーが適切でしょう。 –
私はタイマーについて考えましたが、私の仕事は5秒から5分の時間がかかりましたので、私は背景職人がより良い選択だと思っていました。 – poco
なぜCPU%について懸念していますか?システムの残りの部分が応答性を保っていることを確認したい場合は、優先度の低いスレッドに置くほうが適切でしょう。 –