我正在处理的应用程序调用外部API来处理用户可能提出的某些请求。这当然是在一个单独的线程中完成的,试图阻止UI冻结或减速。但是,外部API会产生自己的线程数量并执行一些处理器密集型工作。一旦调用它,CPU使用率就会上升到100%。然后这会锁定我的UI。在C#中是否存在将可用CPU使用限制为第三方API的方法?
答案 0 :(得分:4)
在这种情况下我唯一能想到的是改变线程优先级。您可以稍微增加UI线程的优先级,或者尝试降低其他线程的优先级。
后者被认为更合适,但在您的情况下有点棘手,因为您将不得不查询所有正在运行的线程,找出哪些是工作线程,并降低其优先级。您可能需要检测新线程并更改其优先级。
答案 1 :(得分:3)
我不知道将API调用限制为给定处理器资源的方法。肯定有一些方法可以缩减应用程序中的处理器使用率,但不能限制给定的API路径。
我认为这里最好的解决方案是执行以下操作
限制子进程执行,使其不会占用所有CPU的100%。最简单的方法是为流程提供较低的优先级。