Как ограничить использование ЦП программой С#?

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

Ответ 1

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

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

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

Ответ 2

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

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

Ответ 3

Я думаю, вам нужно запросить какой-то OS API, чтобы узнать, сколько из процессора вы потребляете и принимаете решения о регулировании (например, Thread.Sleep).