如何关闭子进程而不影响父进程

时间:2013-07-16 18:10:53

标签: c# forms process children

我有一个表格(MainForm) MainForm 有一个按钮,可以调用 Editor.exe 。 exe调用者代码显示如下:

private void InsertEquaButtonClick(object sender, EventArgs e)
{
    Process p = Process.Start(Editor.exe);
    string test = p.ProcessName;
    p.WaitForExit();
}

Editor.exe 是一个单独的可执行文件,它提供了一个用户输入表单;用户在该表单中输入一个图像文件后,单击“确定”按钮,它将关闭,该图像将被放入MainForm。

以下是确定按钮的代码:

.......
encoder.Save(s);// Save image to MainForm

var processes = Process.GetProcessesByName("Editor");
foreach (Process proc in processes)
{
    proc.CloseMainWindow(); // Propblem is here
    //   proc.Close();  
}
..........         

问题是,当我在编辑器中单击“确定”按钮时,所有应用程序(MainForm和Editor.exe)都会关闭。

那么,如何在不杀死MainForm进程(父进程)的情况下杀死Editor.exe(子进程)?

我一直在尝试:

proc.close()

pro.Kill()

...

但它们不起作用。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

可能是以下链接可以帮助您实现您想要做的事情:

Code Snippet: Terminate all child processes

答案 1 :(得分:1)

问题是因为我的伙伴使用线程到我们的项目运行得更快,所以当我在编辑器中关闭进程时它会关闭线程。 ....这是有问题的原因 谢谢你