C#:检查进程是否正在运行问题
问题描述:
我正在创建一个应用程序,该应用程序应该在检测到它已关闭时自动重新启动程序。我创建了两个按钮,一个用于激活它,另一个用于隐藏窗口。在下面的代码中,Exec()中的do-while循环执行,但(pname.Lenght == 0)总是返回false。C#:检查进程是否正在运行问题
(toCheck和PathToFile是文本框)
public volatile bool isRunning;
public volatile bool isProcessRunning;
public volatile string ProcessToCheck;
public volatile string FilePath;
private void RunBtn_Click(object sender, RoutedEventArgs e)
{
if (isRunning)
{
isRunning = false;
}
else
{
isRunning = true;
ProcessToCheck = toCheck.Text;
FilePath = PathToFile.Text;
Thread newThread = new Thread(Exec);
newThread.Start();
}
}
void Launcher()
{
if (isProcessRunning == false)
{
Process.Start(FilePath);
}
}
public void Exec()
{
do
{
Process[] pname = Process.GetProcessesByName(ProcessToCheck);
if (pname.Length == 0)
{
isProcessRunning = false;
}
else
{
isProcessRunning = true;
}
Launcher();
} while (isRunning);
}
}
}
答
没关系,原来pname.Lenght返回1而不是0时,过程未运行
你需要告诉我们它什么方式在问题*中不工作*。 – Richard
@Richard好的,我在问题中加入了 – cntrpl
您是否可以将代码缩减为更简单的示例,最好是可以复制和粘贴以调查问题的示例。 你能否详细说明“不起作用”。它怎么不工作?你在期待什么?会发生什么呢?你做了什么调查? – Will