我有一個Outlook加載項,具有我想要修改的行爲,具體取決於聯網計算機是否可用。爲了檢查可用性,我希望在加載項加載時檢查一次,然後將處理程序連接到System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged。我已經讀過這個事件並沒有區分虛擬機的真實網絡適配器和適配器等等。因此,一旦事件被解僱,我計劃對有問題的計算機執行ping操作,以驗證它是否可用。NetworkChange.NetworkAvailabilityChanged,在Outlook加載項中使用,在網絡電纜拔出時不會觸發
這就是說,在調試我的加載項時,斷點指示事件不會觸發,即使拔出網線時也是如此。我的相關代碼如下:
Imports System.Net.NetworkInformation
Imports Microsoft.Win32
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
Try
'do an initial check to see if we are online, store result
drivesAvailable = checkForExcelNetworkDrives()
'code associated with other functionality
'wire up event handlers
AddHandler NetworkChange.NetworkAvailabilityChanged, New NetworkAvailabilityChangedEventHandler(AddressOf LocalNetwork_StateChanged)
'code associated with other functionality
Catch ex As Exception
End Try
End Sub
然後,在模塊(靜態類)中,我有事件處理程序。
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
我還沒有得到調試我的自定義事件,因爲NetworkAvailabilityChanged似乎沒有被解僱。這可能是因爲我在Outlook加載項中使用它嗎?其他事件連接在加載項的Load事件中,並且它們正在工作。另外,我通過了AddHandler這一行,它似乎毫無例外地執行。
我的下一步是設置一個計時器並定期ping網絡計算機。不過,我寧願不要訴諸於此。