You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制其他第三方应用的CPU使用率,现有C#实现无法生效

现有代码无效原因

你当前编写的ThrottledLoop方法仅能控制当前程序进程内主动传入的委托逻辑的执行/休眠节奏,完全没有涉及第三方进程的操作逻辑,因此不可能对其他应用的CPU占用产生限制效果。

可行解决方案
  • 方案1:使用Windows Job Object实现系统级资源限制(最推荐)

Job Object是Windows原生提供的进程组资源管控机制,支持直接限制指定进程的CPU使用率、内存占用等资源,逻辑稳定不会导致目标进程异常。C#可通过P/Invoke调用系统API实现:

  1. 调用CreateJobObject创建Job对象
  2. 通过SetInformationJobObject传入JobObjectCpuRateControlInformation结构体,配置CPU限制百分比
  3. 调用AssignProcessToJobObject将目标第三方进程绑定到该Job对象即可
    注意:该方案仅支持Windows 8/Windows Server 2012及以上系统
  • 方案2:调整第三方进程优先级与CPU亲和性(实现最简单)

如果不需要精确控制CPU占比,只是优先保障Fortnite的资源,直接调整其他高占用进程的优先级和核心亲和性即可,C#自带的Process类就能直接操作,无需P/Invoke:

// 获取目标进程实例
Process targetProcess = Process.GetProcessById(你要限制的进程ID);
// 调低进程优先级
targetProcess.PriorityClass = ProcessPriorityClass.BelowNormal;
// 限制进程仅能使用前2个CPU核心,掩码按需要调整
targetProcess.ProcessorAffinity = new IntPtr(0x0003);

该方案不会导致被限制进程崩溃,兼容性最好,适合你的场景使用。

  • 方案3:手动挂起/恢复目标进程线程(不推荐)

如果需要自定义限制逻辑,可以遍历目标进程的所有线程,按照时间比例交替调用SuspendThread/ResumeThread实现CPU限制,例如要限制到30%占用,就运行300ms、挂起700ms循环。但该方案容易导致目标进程无响应甚至崩溃,仅作为备选方案。

注意事项

所有操作第三方进程的逻辑都需要你的程序以管理员权限运行,否则会触发权限不足的报错。

内容的提问来源于stack exchange,提问作者TheComputerWizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:02