【问题标题】:NetworkChange.NetworkAddressChanged event stops workingNetworkChange.NetworkAddressChanged 事件停止工作
【发布时间】:2013-11-12 15:47:21
【问题描述】:

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

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

【问题讨论】:

标签: c# .net winapi networking wmi


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,这可能对 WiFi 有所帮助,但我正在寻找适用于所有网络类型(包括 LAN)的通用解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多