2016-12-11 31 views
-2

我開始使用parameteres創建應用程序,並且我想在「Startup.exe」關閉後關閉我的C#應用​​程序。 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

我只想在關閉Startup.exe後關閉C#應用程序。 – WinDev