Ответ 1
Почему вы хотите закрыть A
из B
, а A
начать cat B
, а затем закрыть сам?
Process.Start("A.exe");
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else
Я хочу запустить новый процесс B.exe из текущего исполняемого процесса A.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();
}
Почему вы хотите закрыть A
из B
, а A
начать cat B
, а затем закрыть сам?
Process.Start("A.exe");
Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else
Попробуйте Process.Kill() вместо Process.CloseMainWindow().
Если вы просто хотите закрыть текущий процесс, вы должны просто вызвать Application.Exit, а не цикл и завершение процессов.
Если вы попадаете в этот квест, чтобы начать процесс, и после этого убейте свой собственный процесс, используйте Environment.Exit(0)
, а не Application.Exit()
.
Я знаю, что это старый, но в .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 или что-то другое Я тестировал приложение winforms с помощью метода close form после запуска консольного приложения, которое просто блокируется на Console.readline();