繁体   English   中英

过程监控

[英]Process Monitoring

我对 System.Diagnostics.Process class 非常熟悉。 但是,我想知道如何监控特定进程(即检查它是否每 XX 分钟/秒运行一次)。 我需要能够检查一个进程是否正在运行,如果是,则继续初始化程序的 rest。

谢谢,
-扎克

检查它是否仍在运行很容易: Process.HasExited

但是,您可以将EnableRaisingEvents设置为 true,并将处理程序附加到Exited事件,而不是定期轮询。

编辑:回答关于“获取”过程的评论中的问题 - 这取决于您已经知道的内容。 如果您知道它的进程 ID,则可以使用Process.GetProcessById 如果您只知道它的名称,则必须使用Process.GetProcessesByName并弄清楚如果您获得多个结果该怎么办。 如果您不知道确切的名称,您可以使用Process.GetProcesses并查找您知道的任何信息。 这些选项实际上是按优先顺序排列的:)

如果您没有自己启动该进程,您可以通过查看Process.GetProcessesByName(...)Process.GetProcesses(...)返回的列表找到与某个进程关联的Process object

一旦你有了这个过程,你可以听读它的属性(包括HasExited )和(正如乔恩在他的回复中提到的那样)如果你设置了EnableRaisingEvents你可以听它的事件(包括Exited )。

像这样的东西,也许?

        Process[] processlist = Process.GetProcesses();

        bool found = false;
        foreach (Process theprocess in processlist)
        {
            if(theprocess.ProcessName == "YourProcessName")
            {
                found = true;
                break;
            }
        }

        if (!found)
        {
            return;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM