40

コマンド ライン ツールを実行してデータを処理したいと考えています。ブロックする必要はありません。優先順位を下げてほしい。だから私は以下に書いた

 Process app = new Process();
 app.StartInfo.FileName = @"bin\convert.exe";
 app.StartInfo.Arguments = TheArgs;
 app.PriorityClass = ProcessPriorityClass.BelowNormal;
 app.Start();

ただし、System.InvalidOperationException「このオブジェクトに関連付けられているプロセスはありません」というメッセージが表示されます。なんで?このアプリを低優先度で適切に起動するにはどうすればよいですか?

行がなければ、app.PriorityClass = ProcessPriorityClass.BelowNormal;アプリは正常に動作します。

4

3 に答える 3

52

プロセスを開始した後に PriorityClass を設定してみてください。タスク マネージャーはこのように動作し、既に実行中のプロセスに優先順位を設定できます。

于 2009-06-18T01:37:37.737 に答える
15

少しハックすることで、優先度の低いプロセスを作成できます。親プロセスの優先度を下げ、新しいプロセスを作成してから、元のプロセスの優先度に戻します。

var parent   = Process.GetCurrentProcess();
var original = parent.PriorityClass;

parent.PriorityClass = ProcessPriorityClass.Idle;
var child            = Process.Start("cmd.exe");
parent.PriorityClass = original;

childIdle開始時にプロセスの優先度が設定されます。

于 2015-10-15T21:06:59.910 に答える
6

に P/Invoke する準備ができている場合は、フラグCreateProcessを渡すことができます。CREATE_SUSPENDED次に、プロセスを再開する前にプロセスの優先度を微調整できます。

于 2011-09-29T15:46:37.673 に答える