过程监控

时间:2009-03-31 21:38:45

标签: c# process

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

谢谢,
-Zack

3 个答案:

答案 0 :(得分:5)

检查它是否仍在运行很简单:Process.HasExited

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

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

答案 1 :(得分:4)

如果您没有自己启动该流程,则可以查看Process.GetProcessesByName(...)Process.GetProcesses(...)

返回的列表,找到与流程关联的Process对象

一旦你有了这个过程,你就可以听取它的属性(包括HasExited)和(正如Jon在他的回答中提到的那样)如果设置EnableRaisingEvents你可以听取它的事件(包括{{ 3}})。

答案 2 :(得分:-1)

这样的事,也许?

        Process[] processlist = Process.GetProcesses();

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

        if (!found)
        {
            return;
        }