2009-09-03 22 views
4

私はSystem.Diagnostics.ProcessStartInfoを使用して、.NETプログラムからプロセスを起動するためのパラメータを設定しています。プロセスが開始されると、私はそれだけでバックグラウンドで実行されるように、アイドル状態にするプロセスの優先度を変更するにはアイドル状態の優先順位で.NETプロセスを開始するにはどうすればよいですか?

myProcess.PriorityClass = ProcessPriorityClass.Idle 

を使用することができますし、私のCPUパワーを占有しません。 ProcessStartInfoオブジェクトを使用してプロセスが「アイドル」優先順位で開始するように指定する方法はありますか?つまり、実行中のアイドル速度より高い速度でプロセスが実行されることはありませんか?

+1

なぜ起動してすぐにアイドル状態にするのは機能しませんか? –

答えて

5
、一時停止プロセスを開始し、その後優先順位を変更し、処理を再開し

CreateProcess Win32関数でCREATE_SUSPENDEDフラグを使用していますが、残念ながら.NETのサポートがあるかどうかわからないので、P/Invokeに頼る必要があります。

6

異なる優先順位でプロセスを開始するために、Processクラスには提供されるAPIはありません。最良の選択肢は、プロセスを開始した直後に設定することです。あなたがプロセスを開始したら、Process.PriorityClassを設定することができます。

var myProcess = Process.Start(...); 
myProcess.PriorityClass = ProcessPriorityClass.Idle; 

あなたがより高い優先順位で実行されているからプロセスを防ぐために、希望する場合は、darin's answerはP /起動し、WindowsのAPIを使用して回避策を提供します。これでも通常の優先度でプロセスが開始されますが、サスペンド状態で起動されても実行されないため、優先度は無効になります。

+0

私は既にこれをやっているという質問に述べました。ただし、プロセスの実行が開始される前に優先度を設定したいと考えています。質問をお読みください。 – Kibbee

+0

なぜdownvote? ProcessStartInfoで優先順位を設定することはできませんが、作成したプロセス(これは私が表示していたもの)に設定することはできます... –

+0

プロセスを作成した直後に行うことができます。申し訳ありませんが、それは答えです - それ以外の方法はありません。 –

関連する問題