標準出力をリアルタイムに取得する方法について – プログラミング – Home

標準出力をリアルタイムに取得する方法に...
 
通知
すべてクリア

[解決済] 標準出力をリアルタイムに取得する方法について


気分屋
 気分屋
(@気分屋)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

お世話になっております。

具体的にやりたいことですが、テンポラリ領域に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();
-----------------------------------------------------------------------

上記の処理で標準出力を取得しようとすると
最終的な結果のみが返ってきてしまい、
リアルタイムに標準出力を取得することができません。
標準出力をリアルタイムに取得する方法は存在するのでしょうか?

宜しくお願いいたします。


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

ReadToEndしているかでらでは?
ReadLineを使えば一行単位で取得することができます。
# それより小さい単位での取得は可能かどうか不明。


返信引用
気分屋
 気分屋
(@気分屋)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

ご返答ありがとうございます。

-----------------------------------------------------------------------
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();
-----------------------------------------------------------------------

上記のプログラムにより、一行単位でリアルタイムに
標準出力を取得することができました。

ありがとうございました。


返信引用
気分屋
 気分屋
(@気分屋)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

解決チェックを忘れておりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました