VB.NETのコマンドラインアプリケーションから出力をリダイレクトしようとしていますが、何らかの理由で出力をリダイレクトできません。ここに私のコード:VB.NETプロセスのリダイレクト出力が機能しない
Dim myProcess As Process = New Process
myProcess.StartInfo.FileName = "g++"
myProcess.StartInfo.Arguments = CMDLineCommand
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.RedirectStandardOutput = True
myProcess.StartInfo.RedirectStandardError = True
myProcess.StartInfo.CreateNoWindow = True
myProcess.Start()
Dim output As String = myProcess.StandardOutput.ReadToEnd
myProcess.WaitForExit()
CMDLineOutputTextBox.Text = output
なぜそれがリダイレクトされていないのですか?前もって感謝します!
EDIT -Neil
:奇妙な
Dim myProcess As Process = New Process
myProcess.StartInfo.FileName = "g++"
myProcess.StartInfo.Arguments = CMDLineCommand
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.RedirectStandardOutput = True
myProcess.StartInfo.RedirectStandardError = True
myProcess.StartInfo.CreateNoWindow = True
myProcess.EnableRaisingEvents = True
AddHandler myProcess.OutputDataReceived, AddressOf GotData
myProcess.Start()
CMDLineOutputTextBox.Text = ""
myProcess.BeginOutputReadLine()
後で...
Private Sub GotData(sendingProcess As Object, outLine As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(outLine.Data) Then
SetText(outLine.Data)
End If
End Sub
Delegate Sub SetTextCallback(value As String)
Private Sub SetText(ByVal value As String)
If Me.CMDLineOutputTextBox.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf SetText)
Me.Invoke(d, New Object() {value})
Else
Me.CMDLineOutputTextBox.Text += value + Environment.NewLine
End If
End Sub
何か:ここに私の完全なコードがありますが、場合には、私の構文で変なものがありますか?
私のフルコードを追加しました...何らかの理由で、CMDLineOutputTextBoxテキストボックスにコマンドライン出力が表示されません。P – neilf
SetTextメソッドにブレークポイントを設定し、そこに確実に到達していることを確認してください。あなたのテキストボックスは複数行に設定されていますか? –
はい、テキストボックスは複数行です。 – neilf