valid - system.diagnostics.process c# example
¿Cómo inicio un proceso con baja prioridad? DO# (3)
Intenta configurar PriorityClass DESPUÉS de iniciar el proceso. El Administrador de tareas funciona de esta manera, lo que le permite establecer prioridades en un proceso que ya se está ejecutando.
Quiero ejecutar una herramienta de línea de comando para procesar datos. No necesita estar bloqueando. Quiero que sea de baja prioridad. Entonces escribí el siguiente
Process app = new Process();
app.StartInfo.FileName = @"bin/convert.exe";
app.StartInfo.Arguments = TheArgs;
app.PriorityClass = ProcessPriorityClass.BelowNormal;
app.Start();
Sin embargo, obtengo una System.InvalidOperationException
con el mensaje "Ningún proceso está asociado con este objeto". ¿Por qué? ¿Cómo inicio correctamente esta aplicación con baja prioridad?
Sin la línea app.PriorityClass = ProcessPriorityClass.BelowNormal;
la aplicación funciona bien
Si está preparado para P / invocar a CreateProcess
, puede pasar CREATE_SUSPENDED
en los indicadores. Luego puede modificar la prioridad del proceso antes de reanudar el proceso.
Puede crear un proceso con menor prioridad haciendo un pequeño truco. Baja la prioridad del proceso principal, crea el nuevo proceso y luego vuelve a la prioridad del proceso original:
var parent = Process.GetCurrentProcess();
var original = parent.PriorityClass;
parent.PriorityClass = ProcessPriorityClass.Idle;
var child = Process.Start("cmd.exe");
parent.PriorityClass = original;
child
tendrá la prioridad del proceso de Idle
desde el principio.