提前感谢您的想法和意见。
我想定期检查我的程序中是否有第三方程序正在用户系统上运行。我目前正在C#中启动以下程序:
String plinkConString = ""; // my connection string
Process plink = Process.Start(utilityPath + @"\putty.exe", plinkConString);
int plinkProcessId = plink.Id;
我启动程序并在Windows环境中获取其pid。由于Putty / PLink可能会在某些时候与其SSH服务器断开连接,因此监控此过程在代码中的运行方式的最佳方法是什么?
有没有更好的方法来启动此程序来监控其成功与否?
答案 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
感兴趣。