2016-12-11 5 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

関連する問題