C#检测进程退出

时间:2012-02-24 15:00:02

标签: c# .net

我有以下代码:

   private void fileSystemWatcher_Changed(object sender, System.IO.FileSystemEventArgs e)
    {
        System.Diagnostics.Process execute = new System.Diagnostics.Process();

        execute.StartInfo.FileName = e.FullPath;
        execute.Start();

        //Process now started, detect exit here

    }

FileSystemWatcher正在观看保存.exe文件的文件夹。保存到该文件夹​​的文件正确执行。但是当打开的exe关闭时,应该触发另一个函数。

有一种简单的方法吗?

4 个答案:

答案 0 :(得分:17)

附加到Process.Exited事件。例如:

System.Diagnostics.Process execute = new System.Diagnostics.Process();    
execute.StartInfo.FileName = e.FullPath;    
execute.EnableRaisingEvents = true;

execute.Exited += (sender, e) => {
    Debug.WriteLine("Process exited with exit code " + execute.ExitCode.ToString());
}

execute.Start();    

答案 1 :(得分:3)

Process.WaitForExit

顺便说一下,由于Process实现了IDisposable,你真的想要:

using (System.Diagnostics.Process execute = new System.Diagnostics.Process())
{
    execute.StartInfo.FileName = e.FullPath; 
    execute.Start(); 

    //Process now started, detect exit here 
}

答案 2 :(得分:2)

您可以将处理程序附加到Process对象上的Exited事件。这是事件处理程序的link to the MSDN article

答案 3 :(得分:1)

您正在寻找的是WaitForExit()函数。

快速谷歌将带您进入http://msdn.microsoft.com/en-us/library/ty0d8k56.aspx

或者更好的是其他人都提到过的退出事件;)