【发布时间】:2013-07-16 18:10:53
【问题描述】:
我有一个表单 (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()
和
...
但它们不起作用。
提前感谢您的帮助。
【问题讨论】:
-
出于好奇,您为什么要调用一个完全独立的可执行文件,而不是将编辑器作为项目/解决方案的一部分?另外,你有没有设置断点来检查
processes的内容? -
为什么需要手动关闭进程?你不能在 OK 按钮处理程序中做
this.Close()吗? -
@Logarr :因为 Editor.exe 是另一个我无法放入我的项目的项目。当我在进程内容编辑器进程和 MainForm 进程中调试时。但是当我关闭编辑器进程时,主窗体进程也会立即关闭
-
@KendallFrey :我一直在尝试 this.Close() 但是当编辑器中的表单关闭然后 MainForm 也关闭时,我想在编辑器中关闭表单但 MainForm 仍然可以插入更多输入