2010-11-25 105 views
12

我想从当前执行进程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(); 
} 
+0

顺便说一句我不想使用Process.Kill()方法 – srivatsa 2010-11-25 16:09:16

+1

为什么你不想使用`Process.Kill()`方法? – abatishchev 2010-11-25 16:10:01

+0

因为它不会调用我的清理代码 – srivatsa 2010-11-25 16:17:46

回答

3

为什么你想从B关闭AA猫开始B然后关闭本身?

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

如果你只是想关闭当前的过程中,你应该能够只是调用Application.Exit而不是通过循环和关闭过程。

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或任何 我使用close形式方法启动一个控制台应用程序后,与WinForms应用程序测试的只有几个街区在Console.readline();

2

如果你陷入了开始一个过程的这个追求,并在之后杀掉你自己的过程,使用Environment.Exit(0)而不是Application.Exit()