NetworkChange.NetworkAddressChanged事件停止工作

时间:2013-11-12 15:47:21

标签: c# .net winapi networking wmi

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

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网络连接/断开连接时发出通知,而不进行轮询。

1 个答案:

答案 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,但我从未使用过这个特殊功能。

相关问题