お世話になっております。
具体的にやりたいことですが、テンポラリ領域にMakefileを作成して実行し
そのMakefileが吐き出す(?)標準出力を横取りし
自分で使用している、テキストボックスに出力していく
という処理を行おうとしています。
-----------------------------------------------------------------------
Process p = new Process();
p.StartInfo.FileName = Environment.GetEnvironmentVariable(ComSpec);
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.Arguments = @/C C:\borland\bcc55\Bin\make.exe;
p.Start();
textBox1.Text = p.StandardOutput.ReadToEnd();
-----------------------------------------------------------------------
上記の処理で標準出力を取得しようとすると
最終的な結果のみが返ってきてしまい、
リアルタイムに標準出力を取得することができません。
標準出力をリアルタイムに取得する方法は存在するのでしょうか?
宜しくお願いいたします。
ReadToEndしているかでらでは?
ReadLineを使えば一行単位で取得することができます。
# それより小さい単位での取得は可能かどうか不明。
ご返答ありがとうございます。
-----------------------------------------------------------------------
Process p = new Process();
p.StartInfo.FileName = Environment.GetEnvironmentVariable(ComSpec);
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.Arguments = @/C C:\borland\bcc55\Bin\make.exe;
p.Start();
while (!p.HasExited)
{
textBox1.Text += p.StandardOutput.ReadLine() + \r\n; ;
textBox1.Update();
}
textBox1.Text += p.StandardOutput.ReadToEnd();
textBox1.Update();
-----------------------------------------------------------------------
上記のプログラムにより、一行単位でリアルタイムに
標準出力を取得することができました。
ありがとうございました。
解決チェックを忘れておりました。