1

提前感谢您的想法和意见。

我想定期检查第三方程序是否正在我的程序中的用户系统上运行。我目前在 C# 中按如下方式启动该程序:

        String plinkConString = ""; // my connection string
        Process plink = Process.Start(utilityPath + @"\putty.exe", plinkConString);
        int plinkProcessId = plink.Id;

我启动程序并在 Windows 环境中获取它的 pid。由于 Putty/PLink 可能会在某些时候断开与 SSH 服务器的连接并关闭,因此监控此过程在代码中的执行情况的最佳方法是什么?

有没有更好的方法来启动这个程序来监控它的成功或失败?

4

2 回答 2

2

如果要检查进程是否仍在运行,可以检查HasExited属性:

Process plink = Process.Start(utilityPath + @"\putty.exe", plinkConString);
....
bool isRunning = plink.HasExited;

以下代码将检查 putty 是否正在运行。如果程序已由用户启动,它也可以工作:

bool isRunning = Process.GetProcessesByName("putty").Length > 0;
于 2010-06-17T12:24:32.953 回答
0

您可以使用Process.WaitForExit()or Process.WaitForExit(int),或使用Process.Exited事件处理程序。Monitor如果您想要比这更复杂的行为,您可能还会感兴趣。

于 2010-06-17T12:24:52.890 回答