나는 내 집에 약 13 대의 컴퓨터가 있으며 로컬 IP로 핑 (ping)하여 모든 것을 모니터 할 수 있기를 원합니다. 나는 ping 대상을 사전에 추가하도록 설정된 프로그램을 가지고 있으며 그 사전은 listview에 표시됩니다.vb.net 여러 스레드에서 pinging
Dim MyPing As New System.Net.NetworkInformation.Ping
Dim Myreply As System.Net.NetworkInformation.PingReply = MyPing.Send("192.168.1.10")
MsgBox(Myreply.RoundtripTime)
그것은 그것의 IP로부터 응답을 얻을 때까지 프로그램을 지연하거나 때까지 시간 초과 : 사용 지금
, 내가 IP를 핑 (ping)로 이동합니다. 이 문제를 피하기 위해 별도의 스레드에서 각 IP에 ping을 수행하고 대리자를 사용하여 사전에 결과를 업데이트해야한다는 것을 알고 있습니다.
스레드와 대리자 사용에 대한 많은 자습서를 이해하려고했지만 실제로 작동하는 방식을 이해할 수 없습니다.이 새로운 스레드에 2 개의 매개 변수를 전달할 수있는 간단한 예제가 필요합니다. 그런 다음 내 사전의 UI 스레드에서 내 정보를 업데이트합니다.
그러나 스레드와 대리자를 이해하고 결국 포기한 후 몇 달 전에 튜토리얼 또는 2 개에서 함께 패치했습니다. 그러나 하나의 매개 변수 만 전달할 수 있으며, 즉석에서 스레드를 핑 (ping) 할 때 작동하는지 잘 모르겠습니다. 게다가, 나는 그것이 어떻게 작동하는지 정말로 이해하지 못하고, 내 인생을 위해 그것을 수정할 수 없었다.
http://www.developerfusion.com/article/5251/delegates-in-vbnet/
http://www.tek-tips.com/faqs.cfm?fid=6036
http://timhastings.co.uk/2011/09/vb-net-using-delegates-for-form-updates-from-worker-threads/이
http://www.youtube.com/watch?v=h-DQywCJ_wY
그래서 요약, 내가 핑해야합니다
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t1 As New Threading.Thread(AddressOf Count)
t1.IsBackground = True
t1.Start(100)
End Sub
Private Sub Count(ByVal Max As Integer)
For i = 1 To Max
SetLabelText(i.ToString())
Threading.Thread.Sleep(50)
Next
End Sub
Private Sub SetLabelText(ByVal text As String)
If Label1.InvokeRequired Then
Label1.Invoke(New Action(Of String)(AddressOf SetLabelText), text)
Else
Label1.Text = text
End If
End Sub
것들 중 몇은 내가 검토 한 별도의 스레드에 IP를 저장 한 다음 ping 결과 (IE : timeout, roundtrip)로 사전에 값을 변경하십시오. 그리고 사전을 업데이트해야하기 때문에 스레드에 두 개의 매개 변수, IP 및 사용자가 해당 컴퓨터를 만드는 고유 한 이름을 전달해야합니다. 누구든지 올바른 방향으로 나를 가리키거나 배울 수있는 아주 간단한 예제를 제공 할 수 있습니까?
그게 의미가 있지만 마지막 서브를 설명해 주시겠습니까? 어떻게 작동하는지 잘 모르겠습니다. – Postman
실제 ping을 수행하는 스레드입니다. 당신의 ip의 일부를 넣고 sleep에 breakpoint를 추가하십시오. 변수를 살펴보면 더 이해할 수 있습니다. – dbasnett
응답이 늦어 져 죄송 합니다만, 귀하는 옳았습니다. 나는 그것을 해부하고 그것을 나의 프로젝트에 합병했다, 나는 그것을 지금 이해한다. 그리고 그것은 잘 작동한다. 할 수있을 때 최선의 답을 고를 것입니다. – Postman