簡體   English   中英

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

[英]How can i limit cpu usage of windows processes using C#

我需要編寫一個將附加到某些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);
}

我希望我說清楚我想要完成什么,只是我不知道如何。 感謝每一位幫助。

  • 您創建一個JOB對象
  • 您限制JOB的CPU
  • 您將目標進程附加到JOB

請參閱作業對象CreateJobObjectSetInformationJobObjectJOBOBJECT_CPU_RATE_CONTROL_INFORMATIONAssignProcessToJobObject 不要嘗試手工制作自己的內部流程節流閥,而要讓專門為此任務設計的組件(即作業)來處理該任務。

請參閱.net中的CreateJobObject / SetInformationJobObject pinvoke的工作示例? 用於NT作業本機API的托管使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM