首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程监控

进程监控
EN

Stack Overflow用户
提问于 2009-03-31 21:38:45
回答 3查看 2.4K关注 0票数 2

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

谢谢,

-Zack

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-31 21:40:38

如果不是自己启动进程,则可以通过查看Process.GetProcessesByName(...)Process.GetProcesses(...)返回的列表来查找与进程关联的Process对象

一旦您有了这个过程,您就可以侦听读取它的属性(包括HasExited),并且(正如Jon在他的响应中提到的那样)如果您设置了EnableRaisingEvents,您就可以侦听它的事件(包括Exited)。

票数 4
EN

Stack Overflow用户

发布于 2009-03-31 21:39:41

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

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

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

票数 5
EN

Stack Overflow用户

发布于 2009-03-31 21:45:35

也许是这样的吧?

代码语言:javascript
复制
        Process[] processlist = Process.GetProcesses();

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

        if (!found)
        {
            return;
        }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/703176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档