2016-12-08 33 views
0

私はsDelete64.exeをWinFormsアプリケーション内で実行しています。出力をテキストボックスにリダイレクトします。ただし、出力の最初の行だけがリダイレクトされます。正常に実行するとsDeleteは何を表示するのですか?コマンド出力をテキストボックスにリダイレクト

sDelete is set for 1 pass. 
Zeroing free space on C:\: 0% 

リダイレクトすると、最初の行だけが表示されます。私がdirのようなコマンドをリダイレクトすると、何も問題は起こりません。

private bool ExecuteCmd(string command) 
    { 
     var startInfo = new ProcessStartInfo("cmd.exe") 
     { 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      RedirectStandardError = true, 
      UseShellExecute = false, 
      CreateNoWindow = true, 
      Arguments = "/c " + command 
     }; 


     _process = new Process { StartInfo = startInfo }; 
     Logger.Debug(string.Format("Cmd.exe is Launching command {0}", command)); 
     _process.Start(); 

     _process.OutputDataReceived += (o, e) => 
     { 
      if (!string.IsNullOrEmpty(e.Data)) 
      { 
       Logger.Debug("Updating loading panel with {0}", e.Data); 
       _textBox.Text += e.Data + "\r\n"; 

      } 

     }; 

     _process.ErrorDataReceived += (o, e) => 
     { 
      if (!string.IsNullOrEmpty(e.Data)) 
      { 
       Logger.Debug("Updating loading panel with {0}", e.Data); 
       _textBox.Text += e.Data + "\r\n"; 

      } 

     }; 

     _process.BeginErrorReadLine(); 

     _process.BeginOutputReadLine(); 

     _process.WaitForExit(); 

     return _process.HasExited; 

sDeleteのStandardOutputがキャプチャされない原因は何ですか?

+0

まず、イベントハンドラを割り当てる前にStart()を呼び出すのは奇妙に思えます。ここで重要かどうかわからない... – DonBoitnott

答えて

関連する問題