2016-12-11 4 views
-2

Я запускаю приложение с параметрами, и я хочу закрыть свое приложение C# после закрытия «Startup.exe». После того, как startup.exe закрыл приложение C#, все еще работает, поэтому мой вопрос в том, почему WaitForExit() не работает для меня? И как решить эту проблему?C# WaitForExit() не работает?

private void button4_Click(object sender, EventArgs e) 
{ 
string arg0 = "/connect"; 
string arg1 = txtUsername.Text; 
string arg2 = txtPassword.Text; 
string genArgs = arg0+" "+arg1 +" "+ arg2; 
string pathToFile = System.IO.Directory.GetCurrentDirectory()+"/Startup.exe"; 
Process runProg = new Process(); 
runProg.StartInfo.FileName = pathToFile; 
runProg.StartInfo.Arguments = genArgs; 
runProg.Start(); 
runProg.WaitForExit(); 
} 
+0

что вы ожидаете 'runProg.WaitForExit()' делать ?. Подсказка: он не закроет ваше приложение. Проверьте [MSDN] (https://msdn.microsoft.com/library/system.diagnostics.process.waitforexit (v = vs.110) .aspx) –

+0

Возможно, вы захотите посмотреть [Как правильно выйти из приложения C#] (http://stackoverflow.com/questions/12977924/how-to-properly-exit-ac-sharp-application) –

ответ

3

Вы по-прежнему находитесь в обработчике кнопок, чтобы приложение было продолжено. Если вы хотите закрыть приложение, добавьте Environment.Exit в конец вашего заявления.

private void button4_Click(object sender, EventArgs e) 
{ 
    var arg0 = "/connect"; 
    var arg1 = txtUsername.Text; 
    var arg2 = txtPassword.Text; 
    var genArgs = arg0+" "+arg1 +" "+ arg2; 
    var pathToFile = System.IO.Directory.GetCurrentDirectory()+"/Startup.exe"; 

    var runProg = new Process(); 
    runProg.StartInfo.FileName = pathToFile; 
    runProg.StartInfo.Arguments = genArgs; 
    runProg.Start(); 

    Environment.Exit(0); 
} 

WaitForExit будет блокировать до тех пор, процесс, который вы породили не окончилась, прежде чем продолжить. См. - https://msdn.microsoft.com/en-us/library/fb4aw7b8(v=vs.110).aspx

+0

Просто удалите этот вызов 'WaitForExit', это бесполезно, если все, что вы делаете после этого, -' Environment.Exit '. –

+0

Полностью согласен, я обновлю ответ –

+0

Я хочу закрыть приложение C# только после закрытия Startup.exe. – WinDev

Смежные вопросы