2016-07-21 28 views
0

我有一個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網絡計算機。不過,我寧願不要訴諸於此。

回答

0

我想我可能已經回答了我自己的問題。我有多個網絡適配器,其中一些適用於虛擬機。只要其中任何一個都啓動了,拔掉我的實際網絡就什麼也沒做。一旦我禁用了所有其他適配器,拔掉我的主要網絡連接導致NetworkAvailabilityChanged觸發。

相關問題