2016-07-21 8 views
0

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.

Antwort

0

Ich denke, dass ich meine eigene Frage beantwortet haben kann. Ich habe mehrere Netzwerkadapter, einige davon für virtuelle Maschinen. Solange irgendwelche von ihnen oben waren, tat das Ausstecken meines tatsächlichen Netzes nichts. Nachdem ich alle anderen Adapter deaktiviert hatte, löste das Trennen meiner primären Netzwerkverbindung NetworkAvailabilityChanged.