【问题标题】:C# Monitor Programs Periodically Based on PIDC#根据PID定期监控程序
【发布时间】:2011-03-04 22:31:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# process monitoring pid


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我将对 WaitForExit() 做一些研究。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我相信这就是我要找的。我会试一试并报告。感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2012-07-15
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    相关资源
    最近更新 更多