我需要编写一个附加到某些Windows进程的类,监视并限制它们的cpu使用情况。 流程优先级的改变对我没有帮助,所以我真的需要编写一个与BES或ThreadMaster基本类似的程序。 所以我需要创建一个类似这样的类(伪代码):
public void cpuLimiter(pid)
{
ProcessHandle handle = attachToProcess(pid);
while (cpuLimiting)
{
if (handle.cpuUsage > 30%)
{
handle.sleep(100miliseconds);
}
sleep(10miliseconds);
}
closeHandle(pid);
}
我希望我说清楚我想要完成什么,只是我不知道如何。 感谢每一位帮助。
答案 0 :(得分:7)
请参阅Job Objects,CreateJobObject,SetInformationJobObject
和JOBOBJECT_CPU_RATE_CONTROL_INFORMATION
,AssignProcessToJobObject
。不要试图手工制作自己的内部流程限制,让专门为此任务设计的组件(即工作)处理任务。
有关NT作业本机API的托管用法,请参阅Working example of CreateJobObject/SetInformationJobObject pinvoke in .net?。