チーム、
私は、実際にはテレフォニック メッセージング サーバーであるサード パーティ アプリケーションを使用しており、接続されているすべてのクライアントと他のサーバー間でメッセージを交換しています。このメッセージング サーバーは、数日間、場合によっては数か月にわたって稼働し続けます。これは完全にコンソール アプリケーションであり、GUI はありません。このサーバーの内部操作を管理するためにも、コンソール ベースのアプリケーションである別のツールがあります。VB.Net 2012 でこのサーバーを起動、停止、再起動するための GUI を準備したいと思います。
- このサーバーのプロセス インスタンスを作成します
適切なパラメーターを使用してサーバーを起動し、実行を続けます。以下は、サーバーを起動するためのアプリケーションのサンプル コードです。
Private Sub Server_Start_Click(sender As Object, e As EventArgs) Handles Server_Start.Click Dim parameter, server_admin_path As String server_admin_path = "D:\Voice_App\DataMessage\MessageServer.exe" parameter = " -properties " & """" & " D :\Voice_App\Config\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 秒) が経過した後、コンソールにログ トレースが生成されます。これは、メッセージ サーバーが管理ツールによって停止されなくなるまで続きます。だから今私が欲しいのは、サーバーによって生成されているすべての行をコンソールにキャプチャし、その行を Windows フォームにあるテキストボックスに貼り付けることです。
以下のコードを取得すると、すべての行が生成されたときに、
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 = 私のアプリケーションはそのようなサーバーを複数処理する予定であり、ユーザーがすべてのメッセージ サーバー インスタンスをコンソール ウィンドウとしてタスクバーに開いて、長いログ トレースをスクロールすることを望んでいません。ここで多くのスレッドを検索しましたが、上記のシナリオでは何も機能しませんでした。私は非常に長い間これに固執しており、これは今やショーストッパーであるため、どんな助けも大歓迎です!!!!