ネットワークコンピュータが使用できるかどうかに応じて、変更する動作を備えたOutlookアドインがあります。空き状況を確認するために、アドインがロードされた時点で一度チェックしてから、ハンドラをSystem.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChangedに接続することを望んでいました。私は、このイベントで仮想マシン用の実際のネットワークアダプタとアダプタなどを区別しないことをお読みになりました。したがって、イベントが発生すると、問題のコンピュータにpingを送信して、利用可能であることを確認する予定です。ネットワークアドインで使用されるNetworkChange.NetworkAvailabilityChangedは、ネットワークケーブルが接続されていないときに起動しません。
私のアドインのデバッグ中に、ブレークポイントは、ネットワークケーブルを抜いても、イベントが発生していないことを示しています。私の関連するコードは次のとおりです。
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することです。私はむしろそれに頼ることはないだろう。