Я использую этот простой способ для обнаружения сети подключения/отключения события:NetworkChange.NetworkAddressChanged событие перестает работать
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
...
static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
RaiseNewtorkChange();
}
static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
RaiseNewtorkChange();
}
static void RaiseNewtorkChange()
{
...
}
Проблема заключается в том, что иногда NetworkAddressChanged
событие просто перестает работать, после того, как он был уволен несколько раз. У кого-нибудь есть идея, почему это может произойти?
В качестве альтернативы, существует ли другой способ обработки сетевых подключений/отключений, используя C# или C/C++. Может быть, есть такая функциональность в Windows API или WMI? Мне нужно уведомление о подключении/отключении сети LAN/WiFi без опроса.
FWIW, наиболее вероятная причина, по которой вы видите его «просто перестать работать», заключается в том, что исключение выбрасывается где-то в обработчике 'RaiseNetworkChange()' и любом последующем коде. Зачем? Прочтите это: https://connect.microsoft.com/VisualStudio/feedback/details/589409/notification-of-static-networkchange-networkaddresschanged-event-is-delayed-or-never-received – Redgum