es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reducir el uso de memoria de mi aplicación en C#

Estoy construyendo un pequeño programa que verifica si el monitor de recursos está abierto y, de ser así, lo cierra.

bool a = true;
while (a == true)
{
    foreach (var p in Process.GetProcessesByName("perfmon"))
    {
        Process.Start("taskkill", "/F /IM perfmon.exe");
    }

    // "perfmon" "Taskmgr"
    foreach (var t in Process.GetProcessesByName("taskkill"))
    { 
        ... 
    }
}

El problema es que consume casi el 30% del rendimiento de mi CPU, ¿cómo puedo reducir el uso de la CPU?

También intenté agregar otros programas como tasklist y el administrador de tareas, pero no funcionó, ¿tienes alguna idea?:

bool a = true;
while (a == true)
{
    System.Threading.Thread.Sleep(1000);
    foreach (var p in Process.GetProcessesByName("Taskmgr"))
    {
        Process.Start("taskkill", "/F /IM Taskmgr.exe");
    }

    // "perfmon" "Taskmgr"
    foreach (var t in Process.GetProcessesByName("taskkill"))
    {
        System.Threading.Thread.Sleep(60000);

        Process b = Process.Start("");
    }
}

foreach (var p1 in Process.GetProcessesByName("perfmon"))
{
    foreach (var t1 in Process.GetProcessesByName("taskkill"))
    {
        System.Threading.Thread.Sleep(60000);

        Process b1 = Process.Start("");
    }
}

foreach (var p2 in Process.GetProcessesByName("tasklist"))
{
    foreach (var t2 in Process.GetProcessesByName("taskkill"))
    {
        System.Threading.Thread.Sleep(60000);

        Process b2 = Process.Start("");
    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de reducir el uso de la CPU es añadir un tiempo de espera más largo en el bucle, por ejemplo, 5000 milisegundos o más, de manera que el bucle se ejecute con menos frecuencia y consume menos recursos de la CPU. Otra forma es utilizar el método Process.WaitForExit() en lugar de utilizar un bucle para comprobar si un proceso ha finalizado, lo cual es más eficiente y permite que la CPU esté inactiva mientras espera a que el proceso finalice.

    En cuanto a añadir otros programas como tasklist y el administrador de tareas, necesitas utilizar los nombres de proceso correctos en el código, los cuales pueden ser diferentes de sus nombres de archivo o nombres de visualización. Puedes comprobar los nombres de proceso utilizando el Administrador de tareas o la herramienta Process Explorer de Microsoft. Además, asegúrate de que el programa que deseas cerrar tenga suficientes privilegios para ser cerrado mediante el comando taskkill.

Comments are closed.