我正在使用System.Diagnostics.ProcessStartInfo来设置从.NET程序启动进程的参数。一旦进程被启动,我可以使用
myProcess.PriorityClass = ProcessPriorityClass.Idle
改变进程的优先级为“空闲”,使其只在后台运行,并不会占用我的CPU功率。是否可以使用ProcessStartInfo对象指定该进程应以“空闲”优先级启动,以便在执行过程中任何时候都不会以高于空闲速度运行?
我正在使用System.Diagnostics.ProcessStartInfo来设置从.NET程序启动进程的参数。一旦进程被启动,我可以使用
myProcess.PriorityClass = ProcessPriorityClass.Idle
在Process类中没有提供API以不同优先级启动进程的功能。最好的选择是在启动进程后立即设置它。一旦您启动了进程,可以设置Process.PriorityClass:
var myProcess = Process.Start(...);
myProcess.PriorityClass = ProcessPriorityClass.Idle;
如果您希望防止进程以更高的优先级运行,darin的回答提供了一种使用P/Invoke和Windows API的解决方法。即使这样启动进程也是普通优先级,但如果它在挂起状态下启动,它将不会运行,因此优先级将没有影响。
首先以挂起的状态启动进程,然后更改其优先级,最后恢复进程。您可以使用CreateProcess Win32函数并使用CREATE_SUSPENDED标志来完成此操作,但不幸的是我不确定.NET是否支持此功能,您可能需要使用P/Invoke。