2017-10-23 17 views
1

cmdを使用してEXEファイルを実行する方法があります。このEXEファイルは、初期化中に例外が発生し、システム上でプロセスを再試行して開始します。 EXEファイルを編集してその動作を変更することはできません。 コードを実行すると、例外の後、コマンドラインウィンドウがすぐに閉じました。 再試行までcmdウィンドウを開いたままにするにはどうすればよいですか?ありがとう、 Tal。 回避策cmd-cでの外部例外#

public void RunJob(Process cmdProcess) 
    {      
     cmdProcess.StartInfo.FileName = "cmd.exe"; 
     cmdProcess.StartInfo.UseShellExecute = false; 
     cmdProcess.StartInfo.CreateNoWindow = true; 
     cmdProcess.StartInfo.RedirectStandardOutput = true; 
     cmdProcess.OutputDataReceived += new DataReceivedEventHandler(form.SortOutputHandler); 
     cmdProcess.StartInfo.RedirectStandardError = true; 
     cmdProcess.ErrorDataReceived += new DataReceivedEventHandler(form.SortOutputHandler); 
     cmdProcess.StartInfo.RedirectStandardInput = true; 
     cmdProcess.StartInfo.Arguments = string.Format("/k cd \"{0}\\BinFolder\"", form.txtLocalRepo); 
     cmdProcess.StartInfo.Verb = "runas"; 

     cmdProcess.Start(); 

     StreamWriter cmdStreamWriter = cmdProcess.StandardInput; 

     cmdProcess.BeginOutputReadLine(); 

     cmdStreamWriter.WriteLine("START testing.exe"); 
    } 
+0

ウィンドウを開いたままにする必要はありません。 Process.WaitForExit()を使用してプログラムを待機させると同時に、バックアッププログラムの起動について通知するWMIイベントを受け取ることができます(初期化中に起動した実行可能ファイルが失敗したときに開始されます)。あなたは次のことをチェックするかもしれません:(受け入れられた答え、EDIT 2)https://stackoverflow.com/questions/8157548/how-to-hook-into-application-and-process-startup-in-windows –

答えて

0

これはコンソールアプリケーションの場合は、新しいAsync Mainメソッドの使用を検討することがあります。これをTaskCompletionSourceのようなものと組み合わせることで、準備が整ったときにあなたのアプリに完全なフラグを立てることができ、タスクを完了したものとしてフラグを立てるまで待つことができます。

関連する問題