有没有办法在c#中限制API的处理器资源?

时间:2011-03-18 15:44:30

标签: c# api processor

我正在处理的应用程序调用外部API来处理用户可能提出的某些请求。这当然是在一个单独的线程中完成的,试图阻止UI冻结或减速。但是,外部API会产生自己的线程数量并执行一些处理器密集型工作。一旦调用它,CPU使用率就会上升到100%。然后这会锁定我的UI。在C#中是否存在将可用CPU使用限制为第三方API的方法?

2 个答案:

答案 0 :(得分:4)

在这种情况下我唯一能想到的是改变线程优先级。您可以稍微增加UI线程的优先级,或者尝试降低其他线程的优先级。

后者被认为更合适,但在您的情况下有点棘手,因为您将不得不查询所有正在运行的线程,找出哪些是工作线程,并降低其优先级。您可能需要检测新线程并更改其优先级。

答案 1 :(得分:3)

我不知道将API调用限制为给定处理器资源的方法。肯定有一些方法可以缩减应用程序中的处理器使用率,但不能限制给定的API路径。

我认为这里最好的解决方案是执行以下操作

  1. 从子进程进行API调用
  2. 限制子进程执行,使其不会占用所有CPU的100%。最简单的方法是为流程提供较低的优先级。