Я использую VB 2010 Express.
У меня есть цикл, который вызывает функцию с именем «singlePing», которая пингует IP-адрес.
Если приложению удалось достичь этого IP-адреса, цвет метки становится зеленым,
в противном случае - красный. (Для каждого IP-адреса есть метка)
Когда я запускаю свое приложение, кажется, что мое приложение "застряло" (на самом деле оно запускает этот цикл), и через некоторое время оно обновляет задний цвет ВСЕХ ЭТИКЕТОВ сразу.
Почему он не обновляет каждый ярлык одновременно?
Это заставляет «пользователя» думать, что приложение застряло.
Вот мой код:
Private Sub btnActivateMonitor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActivateMonitor.Click
Dim xmldoc As New XmlDataDocument()
Dim xmlnode As XmlNodeList
Dim fs As New FileStream(acXmlFileName, FileMode.Open, FileAccess.Read)
Dim i As Integer
Dim name As String
Dim lbl As String
Dim ip As String
xmldoc.Load(fs)
xmlnode = xmldoc.GetElementsByTagName("Unit")
For i = 0 To xmlnode.Count - 1
name = xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
lbl = xmlnode(i).ChildNodes.Item(1).InnerText.Trim()
ip = xmlnode(i).ChildNodes.Item(2).InnerText.Trim()
checkUnitStatus(name, lbl, ip)
Next
End Sub
Sub checkUnitStatus(ByVal name As String, ByVal lbl As String, ByVal ip As String)
rtbLog.Text = rtbLog.Text & TimeValue(Now) & " Checking ..." & name & "(" & ip & ") ..........."
If sendPing(ip) Then
Me.Controls(lbl).BackColor = Color.Green
rtbLog.Text = rtbLog.Text & "success" & vbCrLf
Else
Me.Controls(lbl).BackColor = Color.Red
rtbLog.Text = rtbLog.Text & "Failed" & vbCrLf
End If
End Sub
'+--------------------------------------
'| Send Ping (ip)
'+--------------------------------------
Function sendPing(ByVal ip As String)
Dim reachable As Boolean = False
Try
reachable = My.Computer.Network.IsAvailable AndAlso _
My.Computer.Network.Ping(ip, 10000)
Catch pingException As System.Net.NetworkInformation.PingException
Catch genericNetworkException As System.Net.NetworkInformation.NetworkInformationException
' Fail silently and return false
End Try
Return reachable
End Function