2010-11-25 92 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()