Ich habe ein Outlook-Add-In mit Verhalten, das ich ändern möchte, abhängig davon, ob ein Netzwerkcomputer verfügbar ist. Um die Verfügbarkeit zu überprüfen, hatte ich gehofft, einmal zu überprüfen, wann das Add-In geladen ist, und dann einen Handler mit System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged zu verkabeln. Ich habe gelesen, dass dieses Ereignis nicht zwischen echten Netzwerkadaptern und Adaptern für virtuelle Maschinen und dergleichen unterscheidet. Sobald das Ereignis ausgelöst wird, plane ich, den fraglichen Computer anzupingen, um zu überprüfen, ob er verfügbar ist.NetworkChange.NetworkAvailabilityChanged, im Outlook-Add-In verwendet, wird nicht ausgelöst, wenn das Netzwerkkabel getrennt wird
Während des Debuggens meines Add-Ins gibt ein Haltepunkt an, dass das Ereignis nicht ausgelöst wird, selbst wenn ich mein Netzwerkkabel abziehe. Mein relevanter Code ist wie folgt:
Dann habe ich in einem Modul (statische Klasse) den Event-Handler.
Public Sub LocalNetwork_StateChanged(sender As Object, e As NetworkAvailabilityEventArgs)
'when the network state has changed, check to see if we can still access the Excel network drives
Dim newNetworkState As Boolean = checkForExcelNetworkDrives()
'if the drive connectivity has changed, throw a new event, to warn the rest of the system to update its behavior
If newNetworkState <> drivesAvailable Then
'then call event
RaiseEvent DriveAvailabilityChanged(Nothing, New DriveAvailabilityChangedEventArgs With {.DriveAvailable = newNetworkState})
End If
'update drivesAvailable
drivesAvailable = newNetworkState
End Sub
bekommen habe ich noch nicht mein benutzerdefiniertes Ereignis debuggen, als Network Brennen werden nicht angezeigt. Könnte das sein, weil ich es in einem Outlook-Add-In verwende? Andere Ereignisse werden im Load-Ereignis des Add-Ins verdrahtet und funktionieren. Darüber hinaus habe ich die AddHandler-Zeile durchlaufen und scheint ohne Ausnahme ausgeführt werden.
Mein nächster Schritt besteht darin, einen Timer einzurichten und den Netzwerkcomputer regelmäßig anzupingen. Ich würde lieber nicht darauf zurückgreifen.