我正在为嵌入式系统编写监视程序服务,该系统监视一些专有进程并在必要时重新启动它们。(在您问之前,与恶意软件无关。这只是业务需求)
我需要从刚刚创建的进程中检索友好名称,以便稍后我可以使用该名称检索该进程以监控其运行状况。
我的问题如下:
如果我尝试在
Process.ProcessName
之后立即阅读Process.Start()
,我会得到一个,InvalidOperationException
因为该过程尚未完全创建。如果使用
Process.WaitForInputIdle()
.我需要在创建流程后立即获取友好名称,然后再执行其他任何操作。
这是一个代码片段:
var startInfo = new ProcessStartInfo { FileName = "notepad.exe" };
var process = new Process();
process.StartInfo = startInfo;
process.Start();
process.WaitForInputIdle();
var friendlyName = process.ProcessName;
InvalidOperationException
例如,如果正在启动的进程是 Firefox,这将在最后一行抛出一个。
那么我该怎么做呢?有没有更安全的方法?
编辑:添加了一个代码片段以进行澄清。EDIT2:重新表述了整个问题以进行澄清,留下了不相关的东西。