Как ограничить использование процессора программой C #? - PullRequest
11 голосов
/ 30 октября 2008

Я занимаюсь разработкой программы на C #, и у меня есть одна функция, которая потребляет слишком много процессора. Я хотел бы знать способ контролировать это с помощью кода (не с помощью какого-либо внешнего приложения) и ограничить процент использования процессора. Например, если оно использует 90% загрузки ЦП, мое приложение будет использовать только 20%, даже если оно станет медленнее. Это должно быть сделано автоматически и из приложения. Если вы предоставите класс, это было бы здорово.

Ответы [ 3 ]

16 голосов
/ 30 октября 2008

Я не знаю, можете ли вы это сделать, но вы можете изменить приоритет потока исполняющего потока через свойство Priority Вы установили бы это:

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

Кроме того, я не думаю, что вы действительно хотите ограничить это. Если машина в противном случае простаивает, вы хотите, чтобы она занялась этой задачей, верно? ThreadPriority помогает сообщить об этом планировщику.

0 голосов
/ 31 октября 2008

Полагаю, вам нужно запросить какой-нибудь API-интерфейс ОС, чтобы выяснить, сколько ЦП вы потребляете, и принимать решения по регулированию (например, Thread.Sleep) с этого момента.

0 голосов
/ 30 октября 2008

Вы можете замедлить цикл, вызвав Thread.Sleep (миллисекунды) внутри цикла. Это возвращает процессор обратно в планировщик.

Но «чрезмерное потребление ресурсов процессора» заставляет меня думать, что у вас могут быть более серьезные проблемы. Этот поток опрашивает и ждет чего-то еще? Если это так, вам следует рассмотреть возможность использования Events или какого-либо другого механизма сигнализации на основе ядра.

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