应用程序因进程而保持开启

3

我对C#还是比较新手,所以我不确定这是否可能...

我想做的是使用应用程序表单通过Process启动其他程序,如记事本,然后在记事本仍在运行时关闭我的原始应用程序。

Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.Start();
Application.Exit();

据我所知,为了关闭启动应用程序,我必须关闭/杀死记事本进程。然而,我希望记事本保持打开状态。

是否有办法通过C#实现这一点?


1
这是因为该进程作为您的应用程序的子进程启动。您无法杀死父进程而不使子进程也被杀死。 - Cody Gray
4个回答

2
尝试这个?
using(Process notePad = Process.Start("notepad.exe","")) { }
Application.Exit();

这会启动记事本,但我的应用程序似乎仍在忽略 Application.Exit();。编辑: 我进行了更多测试,并尝试了 Environment.Exit(0);,它完美地工作了,谢谢 :) (现在我想知道为什么它不接受 Application.Exit();,虽然) - Null Void
不需要调用Application.Exit(),进程将在离开“using”范围后被清理。 - sparkyShorts

1
如果您想在关闭窗体后仍然保持记事本打开,请使用以下代码。
private void button1_Click(object sender, EventArgs e)
{
    Thread notepad_opener = new Thread(opener);
    notepad_opener.Start();
}
public void opener()
{
    Process.Start("notepad.exe");
    Application.Exit();
}

我尝试了这个,记事本还是打开了 :D

兄弟,干杯 :) 我本来希望不用按钮就能实现它。但是我发现我的问题在于使用了 Application.Exit(); 而不是 Environment.Exit(0); - Null Void
你可以把它放在任何方法中:D - Alireza

0

你可以保存你启动的进程的ID:

int id = notePad.Id;

然后在你想要的时候杀死它:

Process.GetProcessById(id).Kill();

0
你需要将UseShellExecute属性设置为True;请参见此页面

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接