试过你的代码如下,如果你想关闭你的进程,你必须使用这个函数, process.CloseMainWindow();
这将关闭你开始的进程。
public static void Main()
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
process.StartInfo = startInfo;
process.Start();
Console.ReadLine();
process.CloseMainWindow();
process.Close();
}
在上面的代码中,我开始了cmd.exe
,因为它有自己的窗口,所以我编写CloseMainWindow()
了关闭该程序的代码功能。
由于 Cmd 是单独的进程,因此当您关闭启动它的程序时它不会关闭。
如果父进程崩溃(在 process.CloseMainWindow(); 之前),这个进程会继续运行吗?
问题的答案是:如果父级在调用 CloseMainWindow 之前关闭,Cmd 进程将不会关闭
试试这个检查它
public static void Main()
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
process.StartInfo = startInfo;
process.Start();
throw new Exception("test");
Console.ReadLine();
process.CloseMainWindow();
process.Close();
}
在上面的代码中,主程序出现异常,它在关闭子进程之前创建,然后在这种情况下子进程将运行。
如果要在应用程序关闭时强制关闭外部启动的进程,则可以使用Application.ApplicationExit 事件,并调用外部进程对象的 CloseMainWindow() 函数。