我正在使用这种简单的方法来检测网络连接/断开事件:
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网络连接/断开连接时发出通知,而不进行轮询。
答案 0 :(得分:1)
在我看来,您需要使用Native Wifi API。
查看函数WlanRegisterNotification,特别是此通知:
WLAN_NOTIFICATION_SOURCE_ACM:
用于自动配置模块生成的通知的注册。
Windows XP与SP3和 适用于Windows XP SP2的无线LAN API:仅限于 wlan_notification_acm_connection_complete和 wlan_notification_acm_disconnected通知可用。
免责声明:我过去使用过Native Wifi API,但我从未使用过这个特殊功能。