2013-07-16 59 views
1

我有一个表格(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。

这里是OK按钮的代码:

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

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

的问题是,当我点击编辑OK按钮,所有的应用程序(MainForm,然后Editor.exe)关闭。

那么,如何杀掉Editor.exe(Child Process)而不杀死MainForm进程(Parent Process)呢?

我一直尝试:

proc.close() 

pro.Kill() 

... 

,但他们没有工作。

非常感谢您的帮助。

+1

出于好奇,为什么要调用一个完全独立的可执行文件,而不是让编辑器作为项目/解决方案的一部分?另外,你有没有在断点中检查'processes'的内容? – Logarr

+1

为什么你需要手动关闭进程?你不能在OK按钮处理程序中执行'this.Close()'吗? –

+0

@Logarr:因为Editor.exe是另一个我不能放到我的项目中的项目。当我在进程内容编辑器进程和MainForm进程中调试时。但是当我关闭编辑器进程然后mainform进程立即关闭 – tiendv

回答

1

的问题,因为使用线程我的伙伴ourproject跑得更快,所以当我在编辑器中它关闭关闭过程线程。 ....这是有问题的原因 谢谢