C#基于PID定期监控程序

时间:2010-06-17 12:07:52

标签: c# process monitoring pid

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

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

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

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

有没有更好的方法来启动此程序来监控其成功与否?

2 个答案:

答案 0 :(得分:1)

如果您想检查流程是否仍然正常运行,您可以查看HasExited属性:

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

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

bool isRunning = Process.GetProcessesByName("putty").Length > 0;

答案 1 :(得分:0)

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