C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 37 を表示中)
■19072 / )  Processの標準出力をリアルタイム取得
□投稿者/ 鶏唐揚 (137回)-(2008/05/20(Tue) 09:59:01)

分類:[VB.NET/VB2005] 

[OS]WinXP
[VB]2003/2005

お世話になっております。
今回は表題の通り、ProcessのStandardOutputを逐次読み取りたいというものです

わかりやすいとこで言うとPINGコマンド等、処理の間にもプロンプトに
順次表示されるものを、呼び出し元で奪ってしまおうと思ったのですが
当初書いた以下のコードでは当然ながら最終的な出力結果がまとめて返ってきます

Dim proc As Process

proc = New Process

With proc.StartInfo
    .FileName = "PING"
    .Argument = "xxx.xxx.xx.xx"     'IPは伏せます
    .RedirectStandardOutput = True
    .WindowStyle = ProcessWindowStyle.Hidden
    .CreateNoWindow = True
    .UseShellExecute = False
End With

proc.Start()
Debug.WriteLine(proc.StandardOutput.ReadToEnd())
proc.WaitForExit(10000)

proc.Close()
proc.Dispose()
proc = Nothing


タイマーでReadToEndとも考えたのですが良く考えればStartで固まるので
意味ありませんでした。
マルチスレッド使わずに標準出力のリアルタイム取得を実現できる方法があれば
ご教示願いたいと思います(マルチスレッド使って実現できるかどうかも未確認ですが)

返信 編集キー/


管理者用

- Child Tree -