启动新流程并终止当前流程

时间:2010-11-25 16:06:58

标签: c# process

我想从当前执行进程A.exe。

启动一个新进程B.exe

一旦启动B.exe,我想杀死A.exe(当前正在执行的进程)。

虽然我可以开始B.exe但我无法关闭当前的程序,即A.exe。

我使用的代码是:

//Start the BT Setup Process
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\TEST\B.exe");
Process.Start(startInfo);

//Terminate the FSA 
Process[] myProcess = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (Process process in myProcess)
{
    process.CloseMainWindow();
    //all the windows messages has to be processed in the msg queue
    //hence call to Application DoEvents forces the MSG
    Application.DoEvents();
}

5 个答案:

答案 0 :(得分:6)

为什么要在A cat start B期间关闭A B,然后自行关闭?

Process.Start("A.exe");
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else

答案 1 :(得分:6)

如果您正在进入启动流程的任务,并在之后终止自己的流程,请使用Environment.Exit(0),而不是Application.Exit()

答案 2 :(得分:3)

答案 3 :(得分:2)

如果您只想关闭当前流程,您应该只能调用Application.Exit而不是循环并关闭流程。

答案 4 :(得分:1)

我知道这是旧的,但在.net 4.0中你可以做到

ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\TEST\B.exe");
startInfo.UseShellExecute = true;//This should not block your program
Process.Start(startInfo);

然后是Application.Exit或者其他什么 我在启动一个仅在Console.readline()上阻塞的控制台应用程序后,使用close form方法测试了winforms应用程序;