虽然googlin我只有信息如何获取所有进程,但存储到Process[]
,但我需要的是:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();
下面我创建了一个进程对象,现在我需要知道这个进程是否已关闭,正好是这个,因为如果用户关闭,如果我尝试使用代码proc.Exit();
,则抛出异常。
到目前为止,我正在做:
Process procs = new Process();
Process[] proc = Process.GetProcesses();
foreach (Process p in proc)
{
if (p.Id = procs.Id)
{
//Do Something
break;
}
}
答案 0 :(得分:4)
只需在Process
对象上使用HasExited
:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();
// do something
if(proc.HasExited)
// notepad was closed
或者,如果您希望在流程结束后立即收到通知,请使用Exited
事件:
Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Exited += ProcessExited;
proc.Start();
private void ProcessExited(object sender, EventArgs e)
{
// notepad was closed
}
答案 1 :(得分:2)
添加以下行:
proc.Exited += new EventHandler(proc_Exited);
然后这样的方法:
void proc_Exited(object sender, EventArgs e)
{
//process has ended..
}
你可以拥有自己的全局旗帜,并在处理程序中提升它或“实时”处理它取决于你的最终目标。