2010-06-17 50 views
0

非常感谢您的意见和建议。定期基于PID的C#监控程序

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

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

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

有没有更好的方式来启动这个程序来监视其成功或失败?

回答

1

如果您要检查的进程是否仍然在正常运行,你可以检查HasExited属性:

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

下面的代码将检查腻子是否正在运行。它的工作原理此外,如果方案已经由用户启动:

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

我相信这是我正在寻找的。我会试一试并回报。感谢您的回应! – 2010-06-17 12:56:40

0

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

+0

Thx为答复。我会对WaitForExit()做一些研究。 – 2010-06-17 12:57:26