【问题标题】:Kill child process when application process is killed/crashed当应用程序进程被杀死/崩溃时杀死子进程
【发布时间】:2013-09-19 17:55:50
【问题描述】:

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

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

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

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

我该如何解决?

【问题讨论】:

标签: c# windows process system.diagnostics user32


【解决方案1】:

一种更简单的方法——至少我相信

跟踪您启动的所有进程。

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
            }
        }
    }

为 ArrayList 添加命名空间

using System.Collections;

为进程添加命名空间

using System.Diagnostics;

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多