隊重定向到文本框控件在Windows窗體上,如何控制檯應用程序的輸出在運行時使用vb.net 2012
我有一個第三方應用程序,它實際上是所有連接之間的電話通訊服務器和交換消息客戶端和其他服務器。這個消息傳遞服務器會持續運行好幾天甚至是飛蛾。這完全是一個控制檯應用程序,並沒有任何GUI。即使爲了管理這個服務器的內部操作,還有另外一個工具是基於控制檯的應用程序。我想準備一個GUI啓動,停止和重新啓動在VB.Net 2012年我已成功地在此服務器,
- 創建此服務器
啓動適當的參數服務器的流程實例保持運行。下面是從我的應用程序以啓動服務器一些示例代碼,
私人小組Server_Start_Click(發送者爲對象,例如作爲EventArgs的)把手Server_Start.Click 昏暗參數,server_admin_path作爲字符串 server_admin_path =「d:\ Voice_App \ DataMessage \ MessageServer.exe」 參數= 「-properties」 & 「」 「」 & 「d:\ Voice_App \配置\ message.prop」
Dim proc = New Process() proc.StartInfo.FileName = server_admin_path proc.StartInfo.Arguments = parameter ' set up output redirection proc.StartInfo.RedirectStandardOutput = True proc.StartInfo.RedirectStandardError = True proc.EnableRaisingEvents = True Application.DoEvents() proc.StartInfo.CreateNoWindow = False proc.StartInfo.UseShellExecute = False ' see below for output handler AddHandler proc.ErrorDataReceived, AddressOf proc_OutputDataReceived AddHandler proc.OutputDataReceived, AddressOf proc_OutputDataReceived proc.Start() proc.BeginErrorReadLine() proc.BeginOutputReadLine() 'proc.WaitForExit() Server_Logs.Focus()
結束子
這段代碼很好地啓動了消息服務器。消息服務器現在已啓動,並且在特定時間間隔(例如30秒)之後,它將在控制檯上生成日誌跟蹤,並且這將一直持續到消息服務器未被管理工具停止。所以現在我想要的是捕獲我的服務器在其控制檯上生成的每一行,並將該行粘貼到我窗口窗體上的文本框中。
我得到了下面的代碼,給了我,每一個線和生產時,
Public Sub proc_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
On Error Resume Next
' output will be in string e.Data
' modify TextBox.Text here
'Server_Logs.Text = e.Data ` Does not display anything in textbox
MsgBox(e.Data) 'It works but I want output in text box field
End Sub
PS =我的申請將被處理更多的是一個這樣的服務器,我不希望用戶在每次消息服務器實例在其任務欄上作爲控制檯窗口打開,並且它們正在滾動長日誌跟蹤。我在這裏搜索了很多線程,但在上面的場景中沒有任何工作。任何幫助將不勝感激,因爲我很長時間以來一直堅持這一點,現在這是一個showstopper!
那麼基本上Textbox.Text&=「\ n」&e.Data然後呢?或者我誤解了這個? – WozzeC
感謝WozzeC爲您的建議,但我試過與該死的文本框的一切,但沒有運氣。必須有一些不同的東西。感謝您的投入! – Stack2Heap