Есть ли способ ограничения ресурсов процессора API в C #? - PullRequest
2 голосов
/ 18 марта 2011

Приложение, над которым я работаю, использует внешний API для обработки определенных запросов, которые может сделать пользователь.Это, конечно, делается в отдельном потоке, чтобы попытаться предотвратить зависание или замедление пользовательского интерфейса.Тем не менее, внешний API создает собственную массу потоков и выполняет некоторую интенсивную работу процессора.Как только к нему обращаются, загрузка процессора возрастает до 100%.Это блокирует мой пользовательский интерфейс.Есть ли способ в C # ограничить доступное использование процессора сторонним API?

Ответы [ 2 ]

4 голосов
/ 18 марта 2011

Единственное, что я могу придумать в этом сценарии, это изменить приоритеты потоков. Вы можете немного увеличить приоритет вашего потока пользовательского интерфейса или попытаться снизить приоритеты других потоков.

Последнее считается более правильным, но в вашем случае это немного сложно, так как вам придется запрашивать все запущенные потоки, выяснять, какие рабочие потоки, и снижать их приоритет. Вы, вероятно, должны обнаружить новые потоки и изменить их приоритет.

3 голосов
/ 18 марта 2011

Я не знаю, как ограничить вызов API для данного ресурса процессора.Определенно, есть способы сократить использование процессора в Приложении, но не по заданному пути API.

Я думаю, что лучшее решение для вас здесь - сделать следующее:

  1. Создать APIвызов из дочернего процесса
  2. Ограничить выполнение дочернего процесса таким образом, чтобы он не привязывал 100% всех процессоров.Самый простой способ сделать это - дать процессу более низкий приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...