我想检查程序是否正在运行。 例如,检查程序(记事本)是否正在运行。
我尝试了以下代码:
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就会启动。
答案 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
}
}