使用while(true)循环监视进程

时间:2016-09-22 16:35:33

标签: c# console-application

是否可以优化我的控制台应用程序?由于while(true)循环,它使用高达60%的CPU。 这个想法是每次启动时杀死Microsoft管理控制台(服务)进程。并启动/停止服务 - 使用pswrd和console。

    public static void Main(string[] args)
    {   
        Thread consoleInput = new Thread(_consoleInput);
        consoleInput.Start();
        killProcess();
    }
    static void _consoleInput(){
        getPassword();
        sendServiceCommands();
    }
    static void killProcess(){
        while(true){
            try{
                System.Diagnostics.Process[] myProcs = System.Diagnostics.Process.GetProcessesByName("mmc");
                myProcs[0].Kill();
                }
            catch(Exception e){}
        }           
     }

1 个答案:

答案 0 :(得分:0)

您需要System.Threading.Timer。像这样:

public class Killer
{
    protected const int timerInterval = 1000; // define here interval between ticks

    protected Timer timer = new Timer(timerInterval); // creating timer

    public Killer()
    {
        timer.Elapsed += Timer_Elapsed;     
    }

    public void Start()
    {
        timer.Start();
    }

    public void Stop()
    {
        timer.Stop();
    }

    public void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {  
        try
        {
            System.Diagnostics.Process[] myProcs = System.Diagnostics.Process.GetProcessesByName("mmc");
            myProcs[0].Kill();
        }
        catch {}
    }
}

...

public static void Main(string[] args)
{   
    Killer killer = new Killer();
    Thread consoleInput = new Thread(_consoleInput);
    _consoleInput.Start();
    killer.Start();

    ...

    // whenever you want you may stop your killer
    killer.Stop();
}
相关问题