检查应用程序是否正在运行?

时间:2019-09-26 11:01:34

标签: c# process

我想检查程序是否正在运行。 例如,检查程序(记事本)是否正在运行。

我尝试了以下代码:

Process[] pname = Process.GetProcessesByName("App name");
if (pname.Length != 0) { 
   //run 
}

我要检查。但是在检查突发时,程序(应用程序名称)将停止。并且每当检查操作完成时,程序(应用程序名称)就会启动

public void BS() 
    bool key = true;
    while (key) {
        Process[] pname = Process.GetProcessesByName("appname");
        if (pname.Length != 0) {
            textBox1.Text += "run";
        } else {
            key = false;
            textBox1.Text += "stop";
        }
    }
}

在任何情况下,appname.exe程序都应继续运行,但是当我将其放在表单中以检查appname.exe时,appname.exe程序将停止。

只要while周期停止,appname.exe就会启动。

2 个答案:

答案 0 :(得分:2)

这是使用名称的方法:

Process[] pname = Process.GetProcessesByName("notepad");
if (pname.Length == 0)
  MessageBox.Show("nothing");
else
  MessageBox.Show("run");

您可以循环所有过程以获取ID,以供以后操作:

Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist){
   Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}

答案 1 :(得分:0)

您的程序进入无限循环,这可能会导致应用程序停止和启动。

尝试在再次检查之间使线程处于休眠状态。

public void BS()
{
    bool key = true;
    while (key)
    {
        Process[] pname = Process.GetProcessesByName("appname");
        if (pname.Length != 0)
        {
            textBox1.Text += "run";
        }
        else
        {
            key = false;
            textBox1.Text += "stop";
        }
        System.Threading.Thread.Sleep(1000); //For 1 Second
    }
}