2

我正在使用这种简单的方法来检测网络连接/断开事件:

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 网络连接/断开连接,无需轮询。

4

1 回答 1

1

在我看来,您需要使用Native Wifi API

看看函数WlanRegisterNotification,特别是这个通知:

WLAN_NOTIFICATION_SOURCE_ACM:
注册自动配置模块生成的通知。
带有 SP3 的 Windows XP 和带有 SP2 的 Windows XP 的无线 LAN API:只有 wlan_notification_acm_connection_complete 和 wlan_notification_acm_disconnected 通知可用。

免责声明:我过去曾使用过 Native Wifi API,但我从未使用过此特定功能。

于 2013-11-12T21:40:06.897 回答