Perl スクリプトを実行し、標準出力を読み取って使用する VB .NET プログラムを作成しようとしています。印刷時に各行を個別に処理し、それに応じてプログラムの表示を更新できるようにしたいと考えています。これが私が「書いた」コードです(「ほとんどインターネットからコピーされた」と読んでください):
Private WithEvents pscript As Process
Private Sub myProgram_Load(sender As Object, e As System.EventArgs) Handles Me.Load
pscript = New Process()
pscript.StartInfo.CreateNoWindow = True
pscript.StartInfo.FileName = "C:\perl64\bin\perl.exe"
pscript.StartInfo.Arguments = "C:\test.pl"
pscript.StartInfo.UseShellExecute = False
pscript.StartInfo.RedirectStandardOutput = True
pscript.StartInfo.RedirectStandardInput = True
AddHandler pscript.OutputDataReceived, AddressOf pscript_output_process
pscript.Start()
pscript.BeginOutputReadLine()
End Sub
Private Sub pscript_output_process(sender As Object, e As DataReceivedEventArgs)
MessageBox.Show(e.Data)
End Sub
これには 1 つの問題があります。プログラムは、テスト スクリプトの実行が完了するまで待機し、その後、いくつかの OutputDataReceived イベントを次々に発生させます。これは、実際のスクリプトを使用するようにすると、かなり規則的な間隔で出力されていたにもかかわらず、数時間も何もせず、一度に 5,000 件のイベントを処理しなければならない可能性が高いことを意味します。その間ずっと。
最後にすべてを一度にではなく、書かれたときにテキストの各行を処理する方法はありますか?