Вот что касается связей NetworkAvailbilityChanged.
Friend Shared Function InternalGetIsNetworkAvailable() As Boolean
If ComNetOS.IsWinNt Then
Dim interface2 As NetworkInterface
For Each interface2 In SystemNetworkInterface.GetNetworkInterfaces
If (((interface2.OperationalStatus = OperationalStatus.Up) AndAlso (interface2.NetworkInterfaceType <> NetworkInterfaceType.Tunnel)) AndAlso (interface2.NetworkInterfaceType <> NetworkInterfaceType.Loopback)) Then
Return True
End If
Next
Return False
End If
Dim flags As UInt32 = 0
Return UnsafeWinINetNativeMethods.InternetGetConnectedState((flags), 0)
End Function
Private Shared Sub ChangedAddress(ByVal sender As Object, ByVal eventArgs As EventArgs)
SyncLock AvailabilityChangeListener.syncObject
Dim isNetworkAvailable As Boolean = SystemNetworkInterface.InternalGetIsNetworkAvailable
If (isNetworkAvailable <> AvailabilityChangeListener.isAvailable) Then
AvailabilityChangeListener.isAvailable = isNetworkAvailable
Dim array As DictionaryEntry() = New DictionaryEntry(AvailabilityChangeListener.s_availabilityCallerArray.Count - 1) {}
AvailabilityChangeListener.s_availabilityCallerArray.CopyTo(array, 0)
Dim i As Integer
For i = 0 To array.Length - 1
Dim key As NetworkAvailabilityChangedEventHandler = DirectCast(array(i).Key, NetworkAvailabilityChangedEventHandler)
Dim context As ExecutionContext = DirectCast(array(i).Value, ExecutionContext)
If (context Is Nothing) Then
key.Invoke(Nothing, New NetworkAvailabilityEventArgs(AvailabilityChangeListener.isAvailable))
Else
ExecutionContext.Run(context.CreateCopy, AvailabilityChangeListener.s_RunHandlerCallback, key)
End If
Next i
End If
End SyncLock
End Sub
В соответствии с этим, кажется, что если он говорит вам, что есть сеть, он также должен сообщить вам, что нет сети. Он также, похоже, работает с адресом для каждого устройства. Когда адрес изменяется, он вызывает ChangedAddress.
Посмотрите на них и посмотрите, не поняли ли вы, что происходит за кулисами.
Thanx для сообщения, код хороший и понятный, но, как я вижу, для этого требуются некоторые нативные вызовы, и с этим нет проблем, потому что я решил проблему аналогичным образом, используя взаимодействие с архитектурой SENS и система событий COM +, странно, что функция .NET, о которой я говорил после некоторого тестирования, по-видимому, работал с модемом, только если вы подключены в момент запуска приложения, то он обнаруживает отключение, но если u снова подключиться и отключиться. это не будет .. !!! но отлично работает с LAN с некоторой задержкой, так или иначе, AB –