在应用程序进程被终止/崩溃时杀死子进程

时间:2013-09-15 14:32:23

标签: c# windows process system.diagnostics user32

我正在从我的应用程序创建新进程,并希望在/如果我的应用程序崩溃时杀死这些进程。

所以我找到了这篇文章:Kill child process when parent process is killed。 我拿了第一个例子,将所有代码复制到函数public void Close()下的新类中。

收到错误 - 当前上下文中不存在名称Win32所以我添加了Microsoft.Win32 现在另一个错误 - CloseHandle无法识别。

名称空间“Microsoft.Win32”中不存在类型或命名空间名称“CloseHandle”(您是否缺少程序集引用?

我该如何解决?

1 个答案:

答案 0 :(得分:3)

一种更简单的方法 - 或者我相信

跟踪你开始的所有过程。

ArrayList chilProcess_id = new ArrayList();

    public void process_starter()
    {            
        Process p;
        p = new System.Diagnostics.Process();           
        p.StartInfo.FileName = "YOUR PROCESS PATH";
        if (!p.Start())
             chilProcess_id.Add(p.Id);
    }

现在退出之前,请杀死这些进程。

public void exitApplication()
    {
        Process p;
        foreach (int p_id in chilProcess_id)
        {
            p = Process.GetProcessById(p_id);
            try
            {
                if(!p.HasExited)
                    p.Kill();
            }
            catch (Exception e)
            {
                //Handle the exception as you wish
            }
        }
    }

for ArrayList add namespace

using System.Collections;

for Process add namespace

using System.Diagnostics;