使用 Process 多线程ping 和 outputdatareceived Invoke 的问题
思路是在 form 上画了 5个 textbox,点击按钮后同时ping 5个 ip,其返回值分别显示在5个textbox中,现在测试单个线程都无法显示,贴上部分代码,请各位指正
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myProcess As New Process()
myProcess.StartInfo.FileName = "ping.exe"
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.Arguments = "192.168.5.10"
'在一个隐藏窗口中启动过程
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
myProcess.StartInfo.CreateNoWindow = True
myProcess.StartInfo.RedirectStandardOutput = True
AddHandler myProcess.OutputDataReceived, AddressOf OutputHandler
myProcess.Start()
myProcess.BeginOutputReadLine()
myProcess.WaitForExit()
myProcess.Close()
End Sub
Sub OutputHandler(sender As Object, e As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(e.Data) Then
Dim mystr As String
mystr = e.Data
ShowRecieveData(mystr)
End If
End Sub
Private Sub ShowRecieveData(ByVal mystr As String)
If Me.TextBox1.InvokeRequired Then
Me.Invoke(New wt(AddressOf ShowRecieveData1), mystr.ToString)
Else
TextBox1.Text = mystr.ToString
End If
End Sub
Private Sub ShowRecieveData1(ByVal mystr As String)
TextBox1.Text = mystr.ToString
End Sub