2009-09-03 3 views
4

Я использую System.Diagnostics.ProcessStartInfo для настройки параметров запуска процесса из .NET-программы. После того, как процесс запущен, я могу использоватьКак запустить .NET-процесс с приоритетом простоя?

myProcess.PriorityClass = ProcessPriorityClass.Idle 

Чтобы изменить приоритет процесса на холостом ходу, так что он работает только в фоновом режиме, и не боров мой мощности процессора. Можно ли каким-либо образом использовать объект ProcessStartInfo, чтобы указать, что процесс должен начинаться с приоритета «Idle», так что ни при каких условиях процесс не работает на скорости выше, чем на холостом ходу?

+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/Invoke и API Windows. Даже это запускает процесс с нормальным приоритетом, но если он запущен в приостановленном состоянии, он не будет работать, поэтому приоритет не будет иметь никакого эффекта.

+0

Я уже говорил в вопросе, что я это делаю. Тем не менее, я хочу установить приоритет перед запуском процесса. Пожалуйста, прочитайте вопрос. – Kibbee

+0

Почему downvote? Вы не можете установить приоритет в ProcessStartInfo, но вы можете установить его на процесс, который вы создали, и это то, что я показывал ... –

+0

Вы можете сделать это сразу же после создания процесса, но не раньше. Извините, но это ответ - альтернативы нет. –

Смежные вопросы