[英]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.