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