如何使用C#限制Windows进程的CPU使用率

Igo*_*jic 2 c# cpu-usage cpu-time thread-priority

我需要编写一个类,它将附加到某些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);
}
Run Code Online (Sandbox Code Playgroud)

我希望我说清楚我想要完成什么,只是我不知道如何.感谢每一位帮助.

Rem*_*anu 7

  • 您创建一个JOB对象
  • 您限制JOB的CPU
  • 您将目标进程附加到JOB

作业对象,CreateJobObject,SetInformationJobObjectJOBOBJECT_CPU_RATE_CONTROL_INFORMATION,AssignProcessToJobObject.不要试图手工制作自己的内部流程限制,让专门为此任务设计的组件(即作业)处理任务.

请参阅.net中的CreateJobObject/SetInformationJobObject pinvoke的工作示例?用于NT作业本机API的托管使用.