private static void OnSocketEvent(Interop.Sys.NetworkChangeKind kind) { switch (kind) { case Interop.Sys.NetworkChangeKind.AddressAdded: case Interop.Sys.NetworkChangeKind.AddressRemoved: s_addressChangedSubscribers?.Invoke(null, EventArgs.Empty); break; case Interop.Sys.NetworkChangeKind.AvailabilityChanged: lock (s_availabilityLock) { if (!s_availabilityHasChanged) { s_availabilityTimer.Change(AvailabilityTimerWindowMilliseconds, -1); } s_availabilityHasChanged = true; } break; } }
private static void OnAddressChanged(IntPtr store, IntPtr changedKeys, IntPtr info) { s_addressChangedSubscribers?.Invoke(null, EventArgs.Empty); s_availabilityChangedSubscribers?.Invoke(null, new NetworkAvailabilityEventArgs(NetworkInterface.GetIsNetworkAvailable())); }