También puede introducir un Sueño lento en el bucle principal que vincula el procesador.
Por ejemplo, esto se hace a menudo con bucles de juego: llamar Thread.CurrentThread.Sleep(1);
una vez por cuadro hará que la mayoría de los juegos usen 100% de cpu para usar 1-2% de cpu, y aún así permitir un acceso razonable.
----- Editar ------
Hay ventajas potenciales de dormir por sobre la reducción de la prioridad del proceso o hilo. Los dos principales son:
- Dormir le permite tener más control sobre la cantidad de tiempo de procesador que abandona. Si reduce su prioridad y hay otros procesos que consumen CPU, puede renunciar a más tiempo de procesador de lo que desea. [Esta es la razón por la que tampoco hice Sleep (0), ya que eso no siempre renunciará al tiempo del procesador, aunque sí lo hará. Lo he hecho en sistemas integrados con mayor capacidad para forzar menos uso del procesador.]
- Si su objetivo es reducir el uso total de su CPU, disminuir la prioridad de su proceso no ayudará si no se está ejecutando nada más. Seguirás comiendo 100% de CPU. Esto podría ser útil si está tratando de mantener su consumo de energía (ahorrar costos de energía) o tratar de mantener su generación de calor más baja, dependiendo de la arquitectura de su sistema.
----- Del original -----
Para otras aplicaciones de estilos (UI), otra opción es refactorizar su rutina para que no sea un error, dividir el procesamiento en secciones y procesarlo en bloques en una llamada suscribiéndose a algo como Application.OnApplicationIdle. Esto puede permitir que su UI se mantenga un poco receptiva, ya que se ejecutará de manera acelerada.
Si se trata de una rutina matemática, y está haciendo una gran cantidad de cálculos, entonces podría ser mejor reducir la prioridad de la secuencia y permitirle usar la mayor cantidad de CPU disponible.