Kib*_*bee 4 .net scheduling process
我正在使用System.Diagnostics.ProcessStartInfo来设置从.NET程序启动进程的参数.一旦该过程开始,我就可以使用
myProcess.PriorityClass = ProcessPriorityClass.Idle
Run Code Online (Sandbox Code Playgroud)
要将进程的优先级更改为空闲,以便它只在后台运行,并且不会占用我的CPU电源.有没有办法使用ProcessStartInfo对象来指定进程应该以"空闲"优先级开始,以便在执行期间的任何时候进程都是以高于空闲速度运行的进程?
Process类中没有提供API来启动具有不同优先级的进程.最好的选择是在启动过程后立即设置它.一旦启动该过程,您可以设置Process.PriorityClass:
var myProcess = Process.Start(...);
myProcess.PriorityClass = ProcessPriorityClass.Idle;
Run Code Online (Sandbox Code Playgroud)
如果您希望阻止进程以更高的优先级运行,darin的答案提供了使用P/Invoke和Windows API的解决方法.即使这样也会以正常的优先级启动进程,但是如果它以挂起状态启动,它将不会运行,因此优先级将不起作用.
启动暂停的进程,然后更改优先级,然后恢复该进程.您可以使用CREATE_SUSPENDED标志使用CreateProcess Win32函数执行此操作,但遗憾的是我不确定.NET是否支持此操作,您可能需要求助于P/Invoke.
| 归档时间: |
|
| 查看次数: |
3943 次 |
| 最近记录: |