分類:[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で固まるので
意味ありませんでした。
マルチスレッド使わずに標準出力のリアルタイム取得を実現できる方法があれば
ご教示願いたいと思います(マルチスレッド使って実現できるかどうかも未確認ですが)
|