C#プログラムが使用するCPU使用量を制限するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/251198

  •  05-07-2019
  •  | 
  •  

質問

C#プログラムを開発していますが、CPUを大量に消費する関数が1つあります。これをコード(外部アプリケーションではなく)で制御し、CPU使用率を制限する方法を知りたいです。 たとえば、CPU使用率の90%を使用する場合、アプリが遅くなっても20%しか消費しないようにします。自動的に、アプリ内から実行する必要があります。 クラスを提供すれば、素晴らしいでしょう。

役に立ちましたか?

解決

それができるかどうかはわかりませんが、実行中のスレッドのスレッド優先度は Priority プロパティ。次の方法で設定します。

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

また、あなたが本当にそれを制限したいとは思わない。マシンがアイドル状態の場合、タスクで忙しくなりますか? ThreadPriorityは、これをスケジューラに伝えるのに役立ちます。

他のヒント

ループ内でThread.Sleep(milliseconds)を呼び出すことにより、ループを遅くすることができます。これにより、CPUがスケジューラに戻されます。

しかし、「CPUを過度に消費している」ということは、もっと根本的な問題があるのではないかと思います。このスレッドはポーリングして他の何かを待っていますか?その場合は、イベントまたは他のカーネルベースのシグナリングメカニズムの使用を検討する必要があります。

CPUをどれだけ消費しているかを調べるために、ある種のOS APIにクエリを実行し、それからスロットリングの決定(Thread.Sleepなど)を行う必要があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top