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

本文关键字:循环 监视 进程 true while 使用 | 更新日期: 2023-09-27 18:08:25

是否有可能优化我的控制台应用程序?由于while(true)循环,它使用高达60%的CPU。这个想法是在每次启动微软管理控制台(服务)进程时杀死它。启动/停止服务-使用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){}
        }           
     }

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

需要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();
}