2016-07-21 53 views
0

ネットワークコンピュータが使用できるかどうかに応じて、変更する動作を備えた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することです。私はむしろそれに頼ることはないだろう。

答えて

0

私は自分自身の質問に答えるかもしれないと思います。私は複数のネットワークアダプタを持っており、仮想マシンにはいくつか含まれています。それらのいずれかが起動していた間、私の実際のネットワークのプラグを抜くことは何もしなかった。他のすべてのアダプタを無効にすると、プライマリネットワーク接続のプラグを抜くと、NetworkAvailabilityChangedが起動しました。

関連する問題