Ich erstelle ein Überwachungssystem mit VB.net. Ich möchte, dass das System eine E-Mail sendet, wenn ein Gerät nicht verfügbar ist, und eine E-Mail erneut senden, wenn dieses Gerät wieder online ist. Ich verwende Ping, um die Geräte zu überwachen. Die IP-Adresse des Geräts ist bereits gespeichert und wird in lvi.SubItems(5).Text
angezeigt.E-Mail einmal senden, wenn Ping fehlschlägt
Mit dem folgenden Code wird die E-Mail immer gesendet, wenn der Geräte-Ping fehlschlägt. Ich möchte nur die E-Mail einmal gesendet werden, wenn der Ping fehlschlägt. Können Sie mir helfen, das Problem zu lösen?
Private Sub Ping_LV()
For Each lvi As ListViewItem In LV_Monitoring.Items
Dim p As New Ping
AddHandler p.PingCompleted, AddressOf p_PingCompleted
p.SendAsync(lvi.SubItems(5).Text, lvi)
Next
End Sub
Private Sub p_PingCompleted(ByVal sender As Object, ByVal e As System.Net.NetworkInformation.PingCompletedEventArgs)
Dim p As Ping = DirectCast(sender, Ping)
Dim lvi As ListViewItem = DirectCast(e.UserState, ListViewItem)
If e.Reply.Status = IPStatus.Success Then
Console.WriteLine("Ping Success")
lvi.SubItems(6).Text = "UP"
lvi.UseItemStyleForSubItems = False
lvi.SubItems(6).ForeColor = Color.White
lvi.SubItems(6).BackColor = Color.Green
Else
Console.WriteLine("Ping Failed")
lvi.SubItems(6).Text = "DOWN"
lvi.UseItemStyleForSubItems = False
lvi.SubItems(6).ForeColor = Color.White
lvi.SubItems(6).BackColor = Color.Red
Sent_Email()
End If
RemoveHandler p.PingCompleted, AddressOf p_PingCompleted
p.Dispose()
LV_Monitoring.Refresh()
End Sub
Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles Timer.Tick
Ping_LV()
End Sub
Private Sub Form_Monitoring_Devices_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer.Start()
End Sub
Sie konnten den gegenwärtigen 'Text' des Elements testen und nur Senden Sie die Benachrichtigung, wenn sie noch nicht "DOWN" ist. Ich würde wahrscheinlich lieber ein dediziertes boolesches Flag verwenden, das Sie vielleicht in dem "Tag" des Elements speichern könnten. – jmcilhinney
Das verstehe ich nicht ganz, möchtest du mir einen Beispielcode für diesen Fall zeigen? –