队重定向到文本框控件在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